メーカーインタビュースリーウェイハンドシェイクを拡張し、N、あなたが立ってバースト?

秋のインタビューのインタビューの質問は、このことを覚えていないだろうどのように多くの企業が募集します。良い要約。今日、のは、詳しく見てみましょう。

ディディダニ。広東省を見ては、テンセントのインタビューもある、ああは電話インタビューであることが判明しました。これは、開始しました!

まず、これは対話の話を持っています

画像

画像

画像

画像

画像

各状態の3ウェイハンドシェイクについての最初の話

第二に、3ウェイハンドシェイクのクライアントサーバーのステータス

どのような状態を見るためにマップを描画する1

画像

ああ?これらのACK seqが不安になり、それをやって、とされていない、我々は、全体を理解するために、TCPプロトコル形式のコンテンツを置きます。

解決するには2つのTCP合意

  • TCPの上に移動するXiaojian第1のヘッド

    画像

  • その後、我々は、各フィールドの意味が何であるかを解決するために見て

フィールド名 フィールド説明
16ポート番号 ホストメッセージから来ていると上位層プロトコルまたはアプリケーション(宛先ポート)に渡される通知します。
32ビットのシリアル番号 1数のバイトストリーム搬送方向の各バイト中のTCP通信(確立されたTCPから切断する接続)
32ビットの確認応答番号 TCPセグメントの送信に応じて、他の当事者として、
4ヘッダ長 TCPヘッダを識別する32ビットワード(4バイト)の数。図4は、最大15のように表すことができ、最大60バイトのTCPヘッダです。
URGフラグ URGフラグ:緊急ポインタが有効であること。
ACKフラグ ACKフラグ:有効な確認番号かどうかを示します。私たちは、セグメントが確認されたTCPセグメントのACKフラグを運んで呼び出します
PSHフラグ PSHフラグ:ヒント受信機アプリケーションがすぐに部屋を作るために、後続のデータを受信し、読み出しデータを行くバッファTCPから受けるべきです。
RSTフラグ RSTフラグ:接続を再確立する尋ねることを示します。私たちは、RSTフラグがリセットセグメントへのTCPセグメントを運ぶ呼び出します。
SYNフラグ SYNフラグは:接続を確立するための要求を示しています。私たちは、同期メッセージとしてSYNフラグのTCPセグメントを運んで呼び出します。
FINフラグ FINフラグ:接続を閉じるためにピアに通知することを示します。私たちは、セグメントの最後にFINフラグを運ぶTCPセグメントを呼び出します。
16ビットウィンドウサイズ これは、TCPフロー制御の手段です。他方の側はデータの伝送速度を制御することができるように、本端末のTCP受信バッファ内のデータのバイトを受信することができるどのように多くの互いに教えます
16ビットのチェックサム 送信者によって満たされ、受信機は、送信中にTCPセグメント試験損傷にCRCアルゴリズムTCPセグメントを実行します
16緊急ポインタ これは、正のオフセットです。シーケンス番号フィールドの値と、それを追加することは緊急データの最後のバイトの次のシーケンス番号を示します

3私たちは、ツールのwiresharkで検証しました

  • オープンwiresharkのは、キャプチャカードを設定します。

    画像

  • 解決

  1. 最初のハンドシェイク:接続を確立し、クライアントがサーバーにSYNパケットを送信し、確認するためにサーバにシリアル番号を搬送し、確認応答をSYN_SEND状態、サーバー待機に入ります。(接続状態開始)

  2. 第二のハンドシェイク:サーバは、その後にサーバ、すなわち、SYN + ACKパケットを、それ自身のシリアル番号を搬送する、独自のSYNパケットを送信し、SYNパケット、クライアント最初の確認SYNを受信し、シリアル番号処理を追加SYN_RECV状態。(コネクタの受信状態)

  3. 3ウェイハンドシェイク:このパケットの送信が完了すると、クライアントがサーバから返されたSYN + ACKパケットを受信し、それはサーバに確認パケットACKを送信し、サーバ・コード・シーケンスは、プロセスに増分され、ESTABLISHED状態に両端には、3つ完了します握手、サーバとクライアントの後に送信データに開始されます。(接続状態を確立します)

私はLinuxのネットワークプログラミングのAPIを言ってみましょう

画像

第三には、Linuxの一般的なネットワークプログラミングAPIを語ります

1 Linuxの一般的なネットワークプログラミングAPI

以下のAPIインターフェイスを知るためにここに少なくとも必要。強度が許す場合にも、あなたはまた、選択投票、ファイルディスクリプタなど、多重化された非ブロックブロックについて話すことができます。

画像

画像

2スティックパック現象

私たちは、サーバーへの連続した以下の2つの文をしたいとします。(1)私はあなたを尊重(2)あなたは私を尊重します

[OK]を、そのサーバーのため、常に可能性が受信されることがあり、「私はYOUYOUが私を尊敬尊重」のような、無知のサーバーその下で、これは何ですか?我々が必要とするので、あなたがたは、そのようなA構造のプロトコルに署名していないので下請け、その後、分割の必要性に優れた構造を整理する方法。この方法は、通常的に許容される保証するために必要なヘッダに格納することができ、送信データの長さです。

画像

第四には、なぜ2ウェイハンドシェイクや握手ことを言いませんか?

なぜ4ウェイハンドシェイク?以下は、男性と女性の間に小さな青いボーイフレンドとの対話をシミュレート:親愛なる缶はあなたが私を聞きますか?午後は「家主の猫」コンサート(送信する機能を持っている)はほとんどのガールフレンドに耳を傾ける:えーえー、聞く、Gouziは私の声を聞くことができますか?(受諾すると、送信する機能)小さな青い彼氏は:ああ:私は少女を(受け入れる能力を有する)、親愛なる聞くを聞くことができますか?漢漢あなたは青ですか?私は私ではないと言っている、私が聞くことができると言うしないでください!これは、コンサートに行く人のようなものですか?

ハッハッハ、これは無益で運動を行う、4ウェイハンドシェイクです。心に留めておく必要がありますだけ必要で十分に送信し、側面が持って受信する機能を

なぜ二人は握手をしませんか?私たちは、小さな青いボーイフレンドとの対話をシミュレートし続ける:親愛なるあなたは私を聞くことができますか?(伝送容量)リトルガール:私は聞くことができ、あなたは私を聞くことができますか?(受諾して、伝送容量)

まあ、小さな青いボーイフレンド、ガールフレンド、ボーイフレンドは、小さな青いも受けることができないと言うを受け入れるする機能はありません。フォローアップも動作するのか分かりません!最後に、それは問題になること?

仮定は、最初にリンクされcientA中にブロックされています。図に示すように。まあ、サーバーが応答を受信しないので、その再発行してみてください、これは、接続されたサーバ上でブロックされていないこの時間。この時間は、リンクが切断されて議論した、恋に落ちることができます。

画像

この私がされている時間ブロックされたクライアントのネットワーク探索では非常に良いですが、リンクサーバーに行ってきました、サーバーばかりやる、私はあなたに戻ってくると、あなたがリソースを割り当てるには、2ウェイハンドシェイクのリンクを完了しました。しかし、良いクライアントは、データやサーバーを通信しません、あなたが失われたと思った、ああ、振り返ることはありません。今回は、サーバリソースの無駄である白に割り当てられたリソースのサーバーの割り当てを、終えました。ネットワークスーパー悪い、サーバはおそらくリソースが不足することはない。このときはそう?

ここに画像を挿入説明
ここに画像を挿入説明

ここに画像を挿入説明

第五に、そして最終的にチャットネットワーク分析ツールプログラム

マインドマップ1つのネットワークのデバッグツール

ここに画像を挿入説明
ここに画像を挿入説明

ここに画像を挿入説明

2つの詳細な様々なガジェット

  • tcpdumpを

そして、他の同様のツールは、基礎となるライブラリは/ libpcapを達成WinPcapの採用され、窓にWiresharkを。メカニズムをフィルタリングBPF使用。ここでは、異なるパラメータが提供するものを見てください。

参数名 含义
-n 使用IP地址表示主机。使用数字表示端口
-i 指定要监听的端口。如果为"-i any"表示住区所有网卡数据包
-v 输出诸如ip数据包中的TTL更加详细的信息
-t 不打印时间戳
-e 显示以太网帧头部信息
-c 仅仅抓取指定数量的数据包
-x 按照十六进制显示数据包内容
-X 不仅仅输出-x结果还输出十六进制对应的ASCII字符
-s 设置抓包时的抓包长度
-w 将输出结果定向到某个文件,一般为pcap后缀
-r 从文件读取数据包并显示

知道了相关参数,下面看几个案例

执行任务 执行命令
捕获特定网口数据包 tcpdump -i eth0
捕获特定个数(1000)的包 tcpdump -c 1000 -i eth0
将捕获的包保存到文件 tcpdump -w a.pcap -i eth0
读取pcap格式的包 tcpdump -r a.pcap
增加捕获包的时间戳 tcpdump -n -ttt -i eth0
指定捕获包的协议类型 tcpdump -i eth0 arp
捕获指定端口 tcpdump -i eth0 post 22
捕获特定目标ip+port的包 tcpdump -i eth0 dst address and port 22
捕获DNS请求和响应 tcpdump -i eth0 -s0 port 53
匹配Http请求头 tcpdump -s 0 -v -n -l
  • lsof

列出当前系统打开的文件描述符工具。可以得知感兴趣的描述符是被哪些进程使用

同样,我们看看相关参数

参数 描述
-i 显示sokcet文件描述符
-c 显示指定的命令打开的所有文件描述符
-t 仅显示打开了目标文件描述符的进程pid

老规矩,上几个例子

执行任务 命令
列出所有的网络链接 lsof -i
列出所有udp的网络链接 lsof -i udp
列出谁在使用某个端口 lsof -i :3306
列出谁在使用特定的tcp端口 lsof -i tcp:80
根据文件描述范围列出文件信息 lsof -d 2-3
  • nc

nc-->“瑞士军刀”。不知大家在渗透过程中,拿了shell有没有使用nc搞点事儿。它用来快速构建网络链接。常用来调试客户端程序。

参数 描述
-i 设置数据包传送的时间间隔
-l 以服务器方式运行。默认为客户端运行
-k 重复接受并处理某个端口上的所有链接
-p 以客户端运行时强制其使用指定端口
-C 将CR和LF两个字符作为结束符
-u 使用udp协议。默认tcp协议
-X nc客户端余代理服务器通信时默认为socks5协议。
-z 扫描目标机器某个范围服务是否开启

小贱上案例

执行任务 执行命令
扫描机器A端口号在30-40的服务 nc -z A 30-40
连接服务器A 端口号为5000 nc -C A 5000
传送文件 MachineA:nc -v -n ip port <d:\a.exe machineb:nc="" -v="" -l="" -p="" port="" style="font-size: inherit; color: inherit; line-height: inherit; margin: 0px; padding: 0px;">E:\a.exe</d:\a.exe>
  • netstat

netstat是一个网络信息统计工具。它可以得到网卡接口上全部了解,路由表信息,网卡接口信息等。通常在网络编程中我们用它来显示TCP连接以及状态信息。

参数 描述
-n 使用IP地址表示主机
-a 显示结果中包含监听的socket
-t 仅显示TCP连接
-r 显示路由信息
-i 显示网卡接口数据流量
-c 每隔1s输出一次
-o 显示socket定时器的信息
-p 显示socket所属的进程的PID和名字

下面列举几个常用例子

执行任务 执行命令
列出所有连接 netstat -a
只列出TCP或者UDP netstat -at/netstat -au
列出监听中的连接 netstat -tnl
获取进程名、进程号以及用户 ID nestat -nlpt
打印统计信息 netstat -s
netstat持续输出 netstat -ct
打印active状态的连接 netstat -atnp | grep ESTA
查看服务是否运行(npt) netstat -aple| grep ntp
  • vmstat

vmstat能够实时输出系统的进程信息,内存使用,cpu使用等资源的使用情况

参数 描述
-f 显示系统自启动以来执行的fork次数
-s 显示内存相关统计信息
-d 显示磁盘相关统计信息
-p 显示指定磁盘分区统计信息
count 采样次数。

看一下vmstat都有哪些输出字段。

ここに画像を挿入説明
在这里插入图片描述

在这里插入图片描述
字段名 描述
procs r表示等待运行的而进程数目。b表示处于不可中断睡眠状态的进程数目
memory swpd:使用的虚拟内存量。free:空闲内存量。buff:用作缓冲区的内存量。cache:用作缓存的内存量。
swap si:从磁盘换入的内存量(/s)。so:交换到磁盘的内存量(/s)。
io bi:从块设备接收的块(blocks/s)。bo:发送到块设备的块(blocks/s)。
system in:每秒中断的次数,包括时钟。cs:每秒上下文切换的次数。

这里注意哈,如果查看磁盘的更加详细信息,有另外iostat所得到的信心就更加详细哟

  • mpstat

能够实时监测多处理器系统中各个cpu的使用情况。这个命令的执行需要安装sysstat,在centos中执行yum install systat就好了。

ここに画像を挿入説明
在这里插入图片描述

在这里插入图片描述

然后我们看看各个字段什么意思。

字段 描述
cpu 表示当前条信息属于哪个cpu的数据
%usr 进程运行在用户空间所占cpu运行时间的比例
%nice nice值为负的进程运行在用户空间的时间占cpu总运行时间的比例
%iowait cpu等待磁盘操作的时间占cpu总运行时间的比例
%irq cpu用于处理硬件中断时间占cpu总运行时间的比例
%soft cpu用于处理软件中断的时间占cpu用运行时间的比例
%steal 架空のCPUのペア。スーパー管理者は仮想CPUを扱うとき場合には、そのための別の待ち時間は、実行する処理を完了します。この待ち時間の間に盗む時間の合計走行時間の割合を表し、
%ゲスト 総運転時間の割合の仮想口座を実行するCPUのCPU時間
%アイドル 総運転時間の割合を占め、システムのアイドル時のCPU

六の終了

さて、今日はこの記事に行き、あなたがこれを読めば、古い鉄ミームのダ!ありがとうございました!注目のではなく、足のポイント

記事は[私のプログラマXiaojian]はじめての視聴を検索することができ、マイクロチャネル、マイクロチャネルで初めてとなります。

彼らは三連勝単式に少し何かを学んだと感じた場合、フォーカス、、、いくつかの高周波インタビュートピックや記事の彼の要約を更新するために、毎週シェアを親指をバックアップします。

書き込みは、作成が私の最大の動機である、我々は次の記事を参照して、ご支援との認識のために、簡単ではありません!

このブログはすべてのエラー、コメントや提案がある場合は、感謝されます!

画像

おすすめ

転載: juejin.im/post/5e246b026fb9a02ffc37644d