网络协议栈、数据包封装

上传人:博****1 文档编号:508010524 上传时间:2023-02-16 格式:DOC 页数:22 大小:809KB
返回 下载 相关 举报
网络协议栈、数据包封装_第1页
第1页 / 共22页
网络协议栈、数据包封装_第2页
第2页 / 共22页
网络协议栈、数据包封装_第3页
第3页 / 共22页
网络协议栈、数据包封装_第4页
第4页 / 共22页
网络协议栈、数据包封装_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《网络协议栈、数据包封装》由会员分享,可在线阅读,更多相关《网络协议栈、数据包封装(22页珍藏版)》请在金锄头文库上搜索。

1、传输层及其以下的机制由内核提供,应用层由用户进程提供(后面将介绍如何使用socket API编写应用程 序),应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通 过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首 部(header),称为封装(Encapsulation),如下图所示(该图出自TCPIP)。图36.3. TCP/IP数据包的封装2D【p首部TCP首烈20以太网帧46-1500 字节应川数据尾部不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),

2、在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 最后将应用层数据交给应用程序处理。上图对应两台计算机在同一网段中的情况,如果两台计算机在不同的网段中,那么数据从一台计算机到另 一台计算机传输过程中要经过一个或多个路由器,如下图所示(该图出自TCPIP)。图36.4.跨路由器通讯过程其实在链路层之下还有物理层,指的是电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期 以太网采用的的同轴电缆(现在主要用于有线电视)、光纤等都属于物理层的概念。物理层的能力决定了 最大传输速率、传输距离、抗干扰性等。集线器(Hub)是工作在物理层的网络设备

3、,用于双绞线的连接 和信号中继(将已衰减的信号再次放大使之传得更远)。链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步(就是说从网线上检测到什么信 号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机是工作在 链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太 网和令牌环网之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装 之后再转发。网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识Internet上有大量路由器 负责根据IP地址选择合

4、适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个 路由器。路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发 数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。IP协议不保证传输的 可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。网络层负责点到点(point-to-point)的传输(这里的点指主机或路由器),而传输层负责端到端(end-to-end) 的传输(这里的“端”指源主机和目的主机)。传输层可选择TCP或UDP协议。TCP是一种面向连接的、 可靠的协议,有点像打电话

5、,双方拿起电话互通身份之后就建立了连接,然后说话就行了,这边说的话那 边保证听得到,并且是按说话的顺序听到的,说完话挂机断开连接。也就是说TCP传输的双方需要首先建 立连接,之后由TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠 的数据流,通讯之后关闭连接。UDP协议不面向连接,也不保证可靠性,有点像寄信,写好信放到邮筒里, 既不能保证信件在邮递过程中不会丢失,也不能保证信件是按顺序寄到目的地的。使用UDP协议的应用程 序需要自己完成丢包重发、消息排序等工作。目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?整个过程如下图所示(该图出自TCPIP)。图

6、 36.5. Multiplexing 过程逬入的帙以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议 首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。假如是IP 数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是 IGMP,然后交给相应的协议处理。假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP 首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址,而 端口号就是同一台主机上标识不同进程的地

7、址,IP地址和端口号合起来标识网络中唯一的进程。注意,虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP 属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但 是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。本文对RARP、ICMP、 IGMP协议不做进一步介绍,有兴趣的读者可以看参考资料。2.以太网(RFC 894)帧格式以太网的帧格式如下所示(该图出自TCPIP): 图36.6.以太网帧格式以丈网封装(HFC 8W):忖的妲吐源地址类型CRCh6241类型08

8、001P数据报1娄型0306砂请球/应答PAD22818;RAKP诸求/应咎1$2B其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。 用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F部分就是硬件地址。协议字段有三种值,分别对应IP、 ARP、RARP。帧末尾是CRC校验码。以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要 在后面补填充位。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如 果一个数据包从以太网路由到拨号链路上,数据包

9、长度大于拨号链路的MTU 了,则需要对数据包进行分 片(fragmentation)。ifconfig命令的输出中也有MTU:1500。注意,MTU这个概念指数据帧中有效载荷 的最大长度,不包括帧首部的长度。3. ARP数据报格式在网络通讯时,源主机的应用程序知道目的主机的ip地址和端口号,却不知道目的主机的硬件地址,而数 据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。 因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求,询问“IP 地址是192.16801的主机的硬件地址是多少”,并将这个请求广播到本地网段(

10、以太网帧首部的硬件地址 填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符, 则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟), 如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。 想一想,为什么表项要有过期时间而不是一直有效?ARP数据报的格式如下所示(该图出自TCPIP):图36.7. ARP数据报格式以太网口的颐厂”坯伴地址氏度匚协议地址长度op以类育聲址发送靖IP

11、地址册字节AR円巧求f应答目的IF地址注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情 况是多余的,但如果链路层是其它类型的网络则有可能是必要的。硬件类型指链路层网络类型,1为以太 网,协议类型指要转换的地址类型,0x0800为IP地址,后面两个地址长度对于以太网地址和IP地址分别 为6和4(字节),op字段为1表示ARP请求,op字段为2表示ARP应答。下面举一个具体的例子。请求帧如下(为了清晰在每行的前面加了字节计数,每行16个字节):以太网首部(14字节)0000: ff ff ff ff ff ff 00 05 5d 61 58 a8 08

12、 06ARP帧(28字节)0000: 00 010010: 08 00 06 04 00 01 00 05 5d 61 58 a8 c0 a8 00 370020: 00 00 00 00 00 00 c0 a8 00 02填充位(18字节)0020:00 77 31 d2 50 100030: fd 78 41 d3 00 00 00 00 00 00 00 00以太网首部:目的主机采用广播地址,源主机的MAC地址是00:05:5d:61:58:a8,上层协议类型0x0806 表示ARP。ARP帧:硬件类型0x0001表示以太网,协议类型0x0800表示IP协议,硬件地址(MAC地址)长度为

13、6, 协议地址(IP地址)长度为4, op为0x0001表示请求目的主机的MAC地址,源主机MAC地址为00:05:5d:61:58:a8,源主机IP地址为c0 a8 00 37(),目的主机MAC地址全0待填写,目 的主机 IP 地址为 c0 a8 00 02 ()。由于以太网规定最小数据长度为46字节,ARP帧长度只有28字节,因此有18字节填充位,填充位的内 容没有定义,与具体实现相关。应答帧如下:以太网首部0000: 00 05 5d 61 58 a8 00 05 5d al b8 40 08 06ARP帧0000: 00 010010: 08 00 06 04 00 02 00 05

14、 5d al b8 40 c0 a8 00 020020: 00 05 5d 61 58 a8 c0 a8 00 37填充位0020:00 77 31 d2 50 100030: fd 78 41 d3 00 00 00 00 00 00 00 00以太网首部:目的主机的MAC地址是00:05:5d:61:58:a8,源主机的MAC地址是00:05:5d:a1:b8:40,上 层协议类型0x0806表示ARP。ARP帧:硬件类型0x0001表示以太网,协议类型0x0800表示IP协议,硬件地址(MAC地址)长度为6,协议地址(IP地址)长度为4,op为0x0002表示应答,源主机MAC地址为0

15、0:05:5d:a1:b8:40,源主机IP地址为c0 a8 00 02(),目的主机MAC地址为00:05:5d:61:58:a8,目的主机IP地址为 c0 a8 00 37 ()。思考题:如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目的主 机通信?4. IP数据报格式IP数据报的格式如下(这里只讨论IPv4)(该图出自TCPIP):图36.8. IP数据报格式版本4位秆部长度只位服箸类型 (T0S)1百位总长度字节数)! M1G位标识逾 标志位片編移8位生存时间(TTL)8位协议帖位首部检验和20字节器位源IP地址32位冃的圧地址v选项(如果有)IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍。对于IPv4, 4位版本字段是4。 4位首部长度的数值是以4字节为单位的,最小值为5,也就是说首部长度最小是4x5=20字节,也就是不 带任何选项的IP首部,4位能表示的最大值是15,也就是说首部长度最大是60字节。8位

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号