TCP/IP、数据链路层的数据关系和格式详解

数据链路层的帧=帧首部+帧的数据部分+帧的尾部 帧的数据部分=IP首部+IP数据部分 IP数据部分=TCP首部+TCP数据部分 数据通讯首先是从上往下,而后再从下往上的传输数据,因此每一个协议的数据报个传输也是这种流程算法

图中括号中的数字表明的是当前域所占的空间大小,单位是bit位。网络

橙色的是数据链路层的头部,一共14字节=14*8=124位大数据

蓝色色的部分是IP头部,通常是20字节指针

紫色部分是TCP头部,通常是20字节进程

最内部的是数据包内容ip

橙色部分:链路层it

数据链路层的帧格式详解:扩展

目的MAC:当前目的主机的mac地址软件

源MAC:当前的源主机的mac地址请求

类型:指定网络层所用的协议类型,一般是IP协议,0x0800

IP数据报格式详解:

版本:记录数据报属于哪个版本的协议,如IPv4或IPv6

首部长度:指明IP头部长度,单位是字,也就是两个字节。该域的值最小为5,就是标准的头部长度;最大为15,代表有扩展部分。

服务类型:用来区分不一样服务的须要

数据报总长:数据包总长度是指ip首部和数据部分之和的长度,单位字节。总长度16位,所以数据包的最大长度为字节。 在IP层下面的每一种数据链路层都有本身的帧格式,其中包括帧格式中的数据字段的最大长度,这里成为最大传送单元MTU(Maximum Transfer Unit)。当一个IP数据报封装成数据层的帧时,此数据报的总长度(首部加上数据部分)必定不能超过下面的数据链路层的MTU值。

分组ID:占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识分组ID)字段(。可是这个分组ID并非序号,由于IP是无链接服务,数据报不存在按序接受的问题。当数据报因为长度超过网络的MTU而必须分片是,这个标识字段的值就被复制到全部的数据报片的标识字段中。相同的标识字段的值使分片后的数据报片最后能正确地重装成为原来的数据报

标记:占3位,但目前只有两位有意义。 标志字段中的最低位记为MF(More Fragment)。 MF=1即表示后面还有分片的数据报。 MF=0即表数据报已经是最后一个数据报后面没有分片。

标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有DF=时才容许分片。

段偏移量:这个域有13bit,也就是每个数据报最多有8192个分段。每个分段的长度必须是8字节的倍数,也就是说8字节是分段的基本单位,固然分组的最后一个段不作限制。这样最大的数据报长度为8*8192=65536字节,比目前限制的最大数据报长度还多1,可以知足对网络中全部数据报传送的需求。

生存时间:占8位,英文缩写TTL,这是一个生存期计数器,最大为255s,可是实际上使用的时候用做跳数计数器,当值为0时数据报被丢弃,用来避免一个数据报太久的逗留在网络中。

高层协议:占8位,协议字段指出数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给那个处理。这里和链路层的类型做用相同,用来表示更高层的协议,这个数据报里是TCP

首部校验和:IP头部的校验和

源IP地址:数据报来源主机的IP地址

目的IP地址:数据报目的主机的IP地址

传输层,这里用的是TCP协议,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=1和ACK=0表示该数据段没有使用捎带的确认域。连接应答则捎带了一个确认,即SYN=1和ACK=1.本质上SYN位是用来表示CONNECTION REQUEST和CONNECTION ACCEPTED,而后进一步用ACK来区分是请求仍是应答,的确很高明。

FIN用来释放一个链接。它表示发送方已经没有数据要传输了。而后,在关闭一个链接后,关闭进程可能会在一段不肯定的时间内继续接收到数据。SYN和FIN数据段都有TCP序号,从而保证了这两种数据段被按照正确的顺序来进行处理。

窗口大小:指定了从被确认的字节算起能够发送多少个字节。要深刻理解这个域的含义,能够参看TCP快重传和慢启动算法

校验和:校验范围包括TCP头、数据报内容和概念性伪头部。概念性伪头部又包括源IP,目的IP,TCP协议号。

紧急指针:指向数据报中紧急数据最后一个字节的下一个字节。

相关文章
相关标签/搜索