日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 系统应用编程——网络编程(TCP/IP 数据包格式解析)

發布時間:2023/12/9 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 系统应用编程——网络编程(TCP/IP 数据包格式解析) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



圖中括號中的數字代表的是當前域所占的空間大小,單位是bit位。

黃色的是數據鏈路層的頭部,一共14字節

綠色的部分是IP頭部,一般是20字節

紫色部分是TCP頭部,一般是20字節

最內部的是數據包內容


黃色部分:鏈路層

目的MAC當前step目的主機的mac地址

MAC當前step的源主機的mac地址

類型指定網絡層所用的協議類型,通常是IP協議,0x0800


綠色部分:網絡層,這里用的是IP包頭格式

版本:記錄數據報屬于哪一個版本的協議,如IPv4IPv6

首部長度:指明IP頭部長度,單位是字,也就是兩個字節。該域的值最小為5,就是標準的頭部長度;最大為15,表明有擴展部分。

服務類型:用來區分不同服務的需要

數據報總長:包含IP頭部的數據報的總長度。注意,這里不包括鏈路層的頭部,目前最大值是65535字節。

分組ID這個域的作用是當一個大的數據報被拆分時,拆分成的小的數據段的這個域都是一樣的。

標記:共三個bit,第一個未使用;第二個DF(Don’t Fragment),設置成1表示這個數據包不能被分割,這個是針對路由器的一條指令;第三個MF(MoreFragment),如果一個數據包被分割了,那么除了最后一個分段以外的所有分段都必須設置為1,用來表示后面還有更多的分段沒有到達,最后一個設置為0,用來表示分割的段全部到達。

段偏移量:這個域有13bit,也就是每一個數據報最多有8192個分段。每一個分段的長度必須是8字節的倍數,也就是說8字節是分段的基本單位,當然分組的最后一個段不做限制。這樣最大的數據報長度為8*8192=65536字節,比目前限制的最大數據報長度還多1,能夠滿足對網絡中所有數據報傳送的需求。

生存時間這是一個生存期計數器,最大為255s,但是實際上使用的時候用作跳數計數器,當值為0時數據報被丟棄,用來避免一個數據報過久的逗留在網絡中。

高層協議這里和鏈路層的類型作用相同,用來表示更高層的協議,這個數據報里是TCP

首部校驗和:IP頭部的校驗和

IP地址:數據報來源主機的IP地址

目的IP地址:數據報目的主機的IP地址


紫色部分:傳輸層,這里用的是TCP協議

源端口號:數據報來源主機的端口號

目的端口號:數據報目的主機的端口號

注意:IP地址,目的IP地址,源端口號,目的端口號這四個字段唯一的確定了一個TCP鏈接。

TCP序號(sq)發送的TCP的序號,從0開始,實際中這個值就是發送的數據報中內容的字節數,比如我發送的第一個報中sq=0,數據報內容20字節,那么下一個數據報的sq就應該是21

捎帶的確認(ack)確認收到上一個數據報,然后act的值是指定自己想要收到的下一個數據報的sq,比如我收到一個數據報的sq=0,數據報內容20字節,那么我的ack就應該是21,用來標明我sq=0,內容為20字節的數據報已經收到,我接下來期望收到的是sq=21的數據報。

首部長度:IP頭部的長度域類似,這個域用來標明TCP頭部的長度,單位也是字。

保留:6bit未使用的域

Flag從左到右,[URG|ACK|PSH|RST|SYN|FIN]

ACK?設置為1表示前面的確認(ack)是有效的,否則前面的確認應被忽略。

PSH?表示要求對方在接到數據后立即請求遞交給應用程序,而不是緩沖起來直到緩沖區收滿為止。

RST?用于重置一個已經混亂的連接。

SYN?用于建立連接的過程。在鏈接請求中,SYN=1ACK=0表示該數據段沒有使用捎帶的確認域。鏈接應答則捎帶了一個確認,即SYN=1ACK=1.本質上SYN位是用來表示CONNECTION?REQUESTCONNECTION ACCEPTED,然后進一步用ACK來區分是請求還是應答,的確很高明。

FIN?用來釋放一個連接。它表示發送方已經沒有數據要傳輸了。然后,在關閉一個連接后,關閉進程可能會在一段不確定的時間內繼續接收到數據。SYNFIN數據段都有TCP序號,從而保證了這兩種數據段被按照正確的順序來進行處理。

窗口大小:指定了從被確認的字節算起可以發送多少個字節。要深入理解這個域的含義,可以參看TCP用色控制和慢啟動算法

http://blog.csdn.net/alexander_xfl/article/details/13170371

校驗和校驗范圍包括TCP頭、數據報內容和概念性偽頭部。概念性偽頭部又包括源IP,目的IPTCP協議號。

緊急指針指向數據報中緊急數據最后一個字節的下一個字節。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Linux 系统应用编程——网络编程(TCP/IP 数据包格式解析)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。