【Socket网络编程】7.以太网数据包、IP数据包、UDP数据包
以太網(wǎng)數(shù)據(jù)包、ip數(shù)據(jù)包、udp數(shù)據(jù)包
搭配這篇博文服用,效果更好:數(shù)據(jù)封裝 和 數(shù)據(jù)拆封:https://blog.csdn.net/u011754972/article/details/117946968
【以太網(wǎng)數(shù)據(jù)包】
即“幀”(frame),每一幀分成兩個部分:標(biāo)頭(Head)和數(shù)據(jù)(Data)。“標(biāo)頭”包含數(shù)據(jù)包的一些說明項,比如發(fā)送者M(jìn)AC地址、接受者M(jìn)AC地址、數(shù)據(jù)類型等等;
"數(shù)據(jù)"則是數(shù)據(jù)包的具體內(nèi)容。“標(biāo)頭”的長度,固定為18 字節(jié)。"數(shù)據(jù)"的長度,最短為 46 字節(jié),最長為1500 字節(jié)。因此,整個"幀"最短為64 字節(jié),最長為1518 字節(jié)。
如果數(shù)據(jù)很長,就必須分割成多個幀進(jìn)行發(fā)送。
【IP數(shù)據(jù)包】
根據(jù)IP 協(xié)議發(fā)送的數(shù)據(jù),就叫做 IP 數(shù)據(jù)包。不難想象,其中必定包括IP 地址信息。以太網(wǎng)數(shù)據(jù)包只包含MAC地址,并沒有 IP 地址的欄位。
把 IP 數(shù)據(jù)包直接放進(jìn)以太網(wǎng)數(shù)據(jù)包的“數(shù)據(jù)”部分,因此完全不用修改以太網(wǎng)的規(guī)格。
IP 數(shù)據(jù)包 也分為“標(biāo)頭”和“數(shù)據(jù)”兩個部分。“標(biāo)頭”部分主要包括版本、長度、IP 地址等信息,“數(shù)據(jù)”部分則是 IP 數(shù)據(jù)包的具體內(nèi)容。
IP數(shù)據(jù)包的 “標(biāo)頭” 部分的長度為 20 到60 字節(jié),整個數(shù)據(jù)包的總長度最大為65,535字節(jié)。因此,理論上,一個 IP 數(shù)據(jù)包的“數(shù)據(jù)”部分,最長為 65,515字節(jié)。
前面說過,以太網(wǎng)數(shù)據(jù)包的“數(shù)據(jù)”部分,最長只有 1500 字節(jié)。因此,如果 IP 數(shù)據(jù)包超過了 1500 字節(jié),它就需要分割成幾個以太網(wǎng)數(shù)據(jù)包,分開發(fā)送了。
【UDP數(shù)據(jù)包】
UDP數(shù)據(jù)包,也是由“標(biāo)頭”和“數(shù)據(jù)”兩部分組成。“標(biāo)頭”部分主要定義了發(fā)出端口和接收端口,“數(shù)據(jù)”部分就是具體的內(nèi)容。
然后,把整個 UDP 數(shù)據(jù)包放入 IP 數(shù)據(jù)包的“數(shù)據(jù)”部分,而前面說過,IP 數(shù)據(jù)包又是放在以太網(wǎng)數(shù)據(jù)包之中的.
以太網(wǎng)數(shù)據(jù)包中存放 IP數(shù)據(jù)包;
IP數(shù)據(jù)包 中存放 UDP數(shù)據(jù)包。
總結(jié)
以上是生活随笔為你收集整理的【Socket网络编程】7.以太网数据包、IP数据包、UDP数据包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Socket网络编程】2.sockad
- 下一篇: 【Socket网络编程】5.单播、多播(