注:本文内容来自网友大神,作为学习笔记记录在此。如有雷同,敬请谅解;
TCP/IP协议栈主要分为四层:应用层、传输层、网络成、数据链路层;每层都有相应的协议;
所谓的协议:就是双方进行数据传输的一种格式。整个网络中使用的协议有很多,所幸的是每一种协议都有RFC文档。
先来看看一帧以太网数据包的格式:
一、TCP协议
TCP协议在运输层。面向连接(先建立连接),所以保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输协议。
二、UDP协议
与TCP同级别。无连接,不保证可靠的传输层协议。
三、IP协议
IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP、IGMP数据都是以IP数据报格式传输。他的特点如下:
- 不可靠。不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。如果发生某种错误,e.g.某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息给信源端。任何要求的可靠性必须由上层来提供(如TCP)。
- 无连接。IP并不维护任何关于后续数据报的状态信息。每隔数据报的处理是互相独立的。也说明,IP数据包可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(A,B),他们独立地进行路由选择,可能不同的路线,B可能在A之前到达。
接下来是介绍详细的头部格式:
1. IP报文格式
IP协议往往被封装在以太网帧中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。如图
下面是IP头部(报头)格式:
- 版本字段(4bits):当前为IPv4,0100
- 报头长度(4bits):用于表示报头的长度。0-15,这里指代的单位是32位字(即4个字节),所以表示的最大长度为15*4=60Byte = 480bits。
- 服务类型(8bits): 1-3bit为优先权子段,现已被忽略;4-7bit:分别代表延迟、吞吐量、可靠性和花费。取值为1分别表示最小时延、最大吞吐量、最高可靠性、最小费用。四个中最多只能有1位为1,对应表示数据报被网络系统传输时怎样处理。可以全为零,表示一般服务。例如:TELNET协议要求最小的延迟,FTP协议数据可能要求最大吞吐量。ICMP协议无特殊要求(4位全为0)。一般而言,主机会忽略这些字段,由动态路由协议根据这些字段的值进行路由决策。
- 总长度字段(16bits):表示整个数据报的长度(以字节为单位),最大长度为65535字节
- 标志字段(16bits):用来唯一标识主机发送的每一份数据报。通常每一发一份报文,它的值就+1;
- 标志位字段(3bits):标志一份数据报是否要求分段。
- 段偏移字段(13bits):如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。
时间: 2024-10-19 06:05:17