TCP/IP协议详解

一、概述

TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同的功能
并且通过若干个协议来实现,上层协议使用下层协议提供的服务。

 

二、格式

1、经过数据链路层封装的数据称为帧。在以太网上传输的帧为以太网帧,其封装格式为:

前导字段:以太网帧之前是一个前导字段,接收器电路用它确定一个帧的到达时间,并确定编码位(称为时钟恢复)

                之间的时间量。

SFD(帧起始分隔符):接收器使用它“恢复时钟”,固定值为0xAB。

DST:目的地址。

SRC:源地址。

类型:用来指出以太网帧内所含的上层协议。即帧格式的协议标识符。对于IP报文来说,该字段值是0x0800。对于ARP信息 来 说,以太类型字段的值是0x0806,对于RARP信息来说,以太类型字段的值为0x8035.

有效载荷:由一个上层协议的协议数据单元PDU构成。可以发送的最大有效负载是1500字节。由于以太网的冲突检测特性,有效负载至少是46个字节(因为在46个字节没有发送完的时候,如果发生冲突就会收到冲突的响应)。如果上层协议数据单元长度少于46个字节,必须增补到46个字节。

帧检验序列(FCS):4个字节。验证比特完整性。

以太网帧的最小长度为64字节(6+6+2+46+4),最大长度为1518字节(6+6+2+1500+4)

2、ARP帧格式

硬件类型:硬件类型字段定义物理地址的类型,它的值为1表示MAC地址。

协议类型:协议类型字段表示要映射的协议地址类型,它的值为0x800表示IP地址。

硬件大小和协议大小:分别指出硬件地址和协议地址的字节数,单位是字节,对MAC地址来说其长度为6,对IP(v4)地址来说,其长度为4.

操作字段:ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)、RARP应答(值为4).

紧跟在后面的4个字段是发送方硬件地址(在这个例子中是以太网MAC地址)、发送

方协议地址(lPv4地址)、目的硬件地址(MAC/以太网地址)和目的协议地址(IPv4地址)。

3、IPv4头部格式

版本:包含IP数据报的版本号,IPv4值为4, IPv6值为6.

Internet头部长度(IHL):保存IPv4头部中的32位字的数量,包括任何选项。应为其长度为4位,所以IP头部最大长度为60字节,正常值为5,IPv6中没有这个字段,其头部长度固定为40字节。

区分服务字段(DS)和显示拥塞通知字段(ECN):用于数据报转发时的特殊处理。

总长度:IPv4数据报的总长度(以字节为单位),由于它是一个16位的字段所以最大长度(包括头部)为65535字节。

标识:唯一地标识主机发送的每一个数据报,发送主机通常在每次(从它的一个IP地址)发送数据报时都将一个内部计数器加1,并将该计数器值复制到IPv4标识字段。这个字段对实现分片很重要。

标志:第一位保留,第二位表示禁止分片,如果设置了该位,IP模块将不对数据报进行分片,如果IP数据报超过MTU,IP模块将会丢弃该数据报并返回一个ICMP差错报文。第三位表示“更多分片”,除了数据报最后一个分片外,其他分片都要把它置为1。

分片位移:表示分片相对原始IP数据报开始处(仅指数据部分)的偏移。实际的偏移值是该值左移3位(乘8)后得到的。除了最后一个IP分片外,每个IP分片的数据部分的长度必须为8的整数倍。

生存期(TTL):用于设置一个数据报可经过的路由器数量的上限,发送方将它初始化为某个值(建议为64,但128或255也不少见),每台路由器在转发数据报时将该值减1。当这个字段值达到0时,该数据报被丢弃,并使用一个ICMP消息通知发送方。

协议:表示数据报有效载荷部分的数据类型。最常用的值为17 (UDP)和6 (TCP)。

头部校验和:仅计算IPv4的头部。这意味着IP协议不检查IPv4数据报有效载荷(例如TCP或UDP数据)的正确性。IPv6头部没有任何校验和字段。

源IP地址和目的IP地址:无论中间经过多少个中转路由器,其值不会改变。

IP选项:

4、UDP头部格式

UDP长度:UDP头部和UDP数据的总长度,以字节为单位,最小值为8。

校验和:包含了IP头部中的源和目的IP地址字段的UDP为头部计算得到的。

5、TCP头部格式

序列号(Seq):标识了TCP发送端到TCP接收端数据流的一个字节,该字节代表着包含该序列号的报文段的数据中的第一个字节。

确认号(ACK):包含的值是该确认号的发送方期待接收的下一个序列号。即最后被成功接收的数据字节的序列号加1。

头部长度:头部的长度(以32字为单位),作为一个4位的字段, TCP被限制为只能带60字节的头部。不带选项,大小是20字节。

CWR:拥塞窗口减(发送方降低它的发送速率)。

ECE:ECN回显(发送方接收到了一个更早的拥塞通告)。

URG:紧急(紧急指针字段有效——很少被使用)。

ACK:确认(确认号字段有效——连接建立以后一般都是启用状态) 。

PSH:推送(接收方应尽快给应用程序传送这个数据——没被可靠地实现或用到) 。

RST:重置连接(连接取消,经常是因为错误)。

SYN:用于初始化一个连接的同步序列号。

FIN:该报文段的发送方已经结束向对方发送数据。

窗口大小:TCP的流量控制由每个端点使用窗口大小字段来通告一个窗口大小来完成。这个窗口大小是字节数,从ACK号指定的,也是接收方想要接收的那个字节开始。这是一个16位的字段,限制了窗日大小到65535字节,从而限制了TCP的吞吐量性能。

TCP校验和:TCP校验和字段覆盖了TCP的头部和数据以及头部中的一些字段,这个字段是强制的,由发送方进行计算和保存,然后由接收方验证。

紧急指针:只有在URG位字段被设置时才有效。这个“指针”是一个必须要加到报文段的序列号字段上的正偏移,以产生紧急数据的最后一个字节的序列号。TCP的紧急机制是一种让发送方给另一端提供特殊标志数据的方法。

选项字段:最常见的选项字段就是“最大段大小”选项,称为MSS。连接的每个端点一般在它发送的第一个报文段(为了建立该连接, sYN位字段被设置的那个报文段)上指定这个选项。MSS指定该选项的发送者在相反方向上希望接收到的报文段的最大值。

 

持续更新中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值