传输层之UDP与TCP的首部

2022-10-23  本文已影响0人  一颗冰淇淋

从通信信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能的最底层。

0_运输层的作用.jpeg

传输层位于应用层和数据链路层之间,主要有两个协议,用户数据报协议UDP(User Datagram Protocol)、传输控制协议TCP(Transmission Control Protocol)。

UDP在发送数据前不需要建立连接,所以首部不需要存储太多数据,只有四部分(源端口、目的端口、长度、检验和),各占2个字节,其中长度属性并没必要,因为完全可以在数据链路层计算出来,这里存在是为了保障头部占据8字节。

1_upd数据格式.jpeg

这里增加了一个【伪首部】,伪首部的数据是不会发送到下一层的,仅仅是用于检验和增强校验的功能,检验和将首部(包括伪首部)和数据部分一起计算。

UDP请求抓包后可以看到只有几项数据,源端口52364,目的端口53,总长度43字节,检验和看起来无效。

2_抓包udp.jpeg

但TCP就不同了,发送数据前需要建立连接,并且尽可能的保障数据可靠交付,首部会有更多的属性来记录信息。

3_tcp数据格式.jpeg 4_抓包tcp.jpeg

从抓包数据可以看到,序号为0,但它真实的序号是一个非常大的数字(631127820),确认号为0,数据偏移为8,乘以4得出的首部长度为32字节,标志位折叠起来了,里面的syn是1,其余都是0,这里是建立连接的时候。

窗口大小64240,检验和看起来无效,紧急指针为0,选项中有12字节,里面定义了一些建立连接需要用的其它数据,加上首部其他属性的默认20字节,与总长度32字节对应。

首部存储信息的不同决定着UDP和TCP存在很大的差异。

5_udp与tcp的区别.png

UDP适合实时的场景,比如直播、视频通话,即使有些时候卡顿,没听清内容、没看到画面,也不影响通信的正常进行。

TCP正好相反,适用于需要数据完整的场景,比如邮件、浏览器、文件传输等,这些场合如何丢失了一些文字和数据,可能语义就完全变了,会对内容完整性有较大影响。

而TCP又如何做到保障数据的可靠传输呢?敬请期待我下一篇文章~

以上就是 传输层之UDP与TCP的首部的内容 , 更多有关 前端网络协议 的内容可以参考我其它的博文,持续更新中~

上一篇 下一篇

猜你喜欢

热点阅读