2.tcp/ip header

2019-03-04  本文已影响0人  摩V羯座

tcp header

一般header有20 bytes,每行4 bytes(32 bits),5行

第一行:Source port + Destination port

Source port:发送方端口号。16bits。

Destination port:接收方端口号。16bits。

因为port占2个字节,所以端口范围是0~65535

第二行:Sequence number

表示发送方的序列号。32bits。tcp是可靠传输,每个byte都有标号,需要追踪每个byte是否传输成功,每个byte的标号就是Sequence number。

初始序列号一般是随机的。

第三行:Acknowledge number

表示接收方的ack序列号。32bits。ack number 和 seq number是配对使用的。只有当ack标志为1时,该序列号有效

第四行:CWR 到 FIN 8个 bit标记位,用来标记当前TCP package的含义。

第五行:Checksum + Urgent pointer

checksum: 做完整性校验,由发送方计算,接收方校验

urgent pointer: 为2个bytes偏移量,加上seq number用于标记某个范围内的bytes特殊用途


ip header

第一行:Version + Header length + Type of service + Total length

version : 版本号。4bits。标志目前采用的ip协议版本号,IPv4(0100),IPv6(0110)

header length:IP包头长度。4bits。这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。该部分占4个bit位,单位为32bit(4个字节),即本区域值= IP头部长度(单位为bit)/(8*4),因此,一个IP包头的长度最长为“1111”,即15*4=60个字节。IP包头最小长度为20字节。

type of service:服务类型。8bits。

PPP:定义包的优先级,取值越大数据越重要

   000 普通 (Routine)

   001 优先的 (Priority)

   010 立即的发送 (Immediate)

   011 闪电式的 (Flash)

   100 比闪电还闪电式的 (Flash Override)

   101 CRI/TIC/ECP(找不到这个词的翻译)

   110 网间控制 (Internetwork Control)

   111 网络控制 (Network Control)

D 时延: 0:普通 1:延迟尽量小

T 吞吐量: 0:普通 1:流量尽量大

R 可靠性: 0:普通 1:可靠性尽量大

M 传输成本: 0:普通 1:成本尽量小

0 最后一位被保留,恒定为0

total length:IP包总长。16bits。 以字节为单位计算的IP包的长度 (包括头部和数据),所以IP包最大长度65535字节。

第二行:Identifier + Flags + Fragmented Offset

Identifier:标识符。16bits。该字段与两外2个字段联合使用,对较大的上层数据包进行分段操作。路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分。

Flags:标记。3bits。

第一位不使用

第二位DF(Don't Fragment)位,1表示路由器不能对该上层数据包分段,

第三位MF(More Fragment)位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。

Fragmented Offset:片偏移。13bits。表示该ip包在该组分片包中的位置,接收端靠该字段来还原IP包。

第三行:Time to live(TTL) + Protocol + Header Checksum

Time to live(TTL) :生存时间。8bits。当IP包进行传送时,对该字段赋值,当IP包经过每一个沿途的路由时,TTL减1,如果TTL为0,该IP包丢弃。可以防止由于路由环路IP包在网络中不停被转发。

Protocol:协议。8bits。标志上层使用的协议。

    1    ICMP

    2    IGMP

    6    TCP

   17    UDP

   88    IGRP

   89    OSPF

Header Checksum:头部校验。16bits。用来做IP Header 正确性检测。因为每个路由器要改变TTL的值,所以路由器会为每个通过的数据包重新计算这个值。

第四行:Source Address

起源地址。32bits。

第五行:Destination  Address

目标地址。32bits。

除非使用NAT,否则整个传输过程中,这两个地址不会改变。

上一篇 下一篇

猜你喜欢

热点阅读