传输层

传输层

传输单元:段/报文段


功能

  1. 提供进程与进程间的逻辑通信
  2. 复用和分用
  3. 差错检测

端口

这里的端口指的是计算机的逻辑端口。

端口号长度为16bit,能表示65535个不同的端口号。


服务端使用的端口号

  • 熟知端口号(0~1023):给TCP/IP最重要的一些应用程序使用

  • 登记端口号(1024~49151):为没有熟知端口号的应用程序使用

客户端使用的端口号

在客户进程运行时动态选择的端口号(49152~65535)


个人补充(可能错误):在应用启动时会占用一个进程,进程有自己的PID,当数据段进入特定端口时,再进入指定进程完成进一步通信。即进程属于应用层部分,端口属于传输层部分


传输层的复用与分用

复用:发送方不同的应用进程 可使用 同一个传输层协议 传输数据

分用:接收方的传输层去掉报文段首部时,能正确交付目标应用进程

其他复用分用方法可参照:复用和分用


UDP

特点

  1. UDP使用无连接服务,减少开销和发送数据之前的时延。
  2. UDP无拥塞控制,适合实时应用
  3. UDP使用最大努力交付,即不保证可靠交付。
  4. UDP是面向报文段的。应用程序交付的报文段,UDP既不合并,也不拆分,直接添加首部以后交给网络层添加首部。

UDP头

每个字段大小:2字节 = 16bit,即UDP首部大小为8字节


16位源/目标端口号

表示源/目标主机的端口号

可表示端口号0 - 65535,如该字段为00100100 01011100时表示端口号为9308


16位UDP长度

单位:字节

表示整个UDP报文段的大小(UDP头+数据)

但该字段为00000000 00010010 表示整个UDP报文段大小为18字节


16位UDP检验和

通过计算而来,用于检验UDP数据段是否有误

TCP与UDP计算过程类似,不重复介绍,在这讲出。


计算过程:

伪首部只有在计算检验和的时候出现。

伪首部字段:

  1. 源IP地址:32位,表示发送方的IP地址。
  2. 目标IP地址:32位,表示接收方的IP地址。
  3. 保留字段:8位,全置为0。
  4. 协议类型:8位,表示上层协议类型,UDP的协议类型值为17,TCP则为6。
  5. UDP长度:16位,表示UDP头部和数据部分的总长度。TCP则表示TCP头部和数据部分总长度,以字节为单位。

过程:

详细计算过程可参照:二进制反码求和运算)


TCP

特点

  1. TCP是面向连接(虚连接)的传输层协议。如打电话
  2. 每一条TCP连接只能有两个端点【这里的端点指socket(套接字) = (主机IP地址:端口号),可标识具体进程】,每一条TCP连接只能是点对点的。
  3. TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。
  4. TCP提供全双工通信。通信双方能够同时发送和接受数据。因此通信双方都有发送缓存和接收缓存。
  5. TCP面向字节流。TCP协议将应用层传递下来的数据视为一串无结构的字节流

4、5点模型

框框代表报文段,发送方和接收方都有自己的发送缓存和接收缓存


TCP头

源端口/目标端口

表示源/目标主机的端口号


序号seq

大小:4字节

报文段数据部分(字节流的)第一个字节的序号(一个字节==一个序号)


确认号

大小:4字节

期待收到对方的下一个报文段的 字节流的 第一个字节的序号

若确认号为N,则表示前N-1的数据都已成功接收


数据偏移

大小:4bit(可表示0-15)

单位长度:4B

表示TCP报文段的首部长度,当该字段为1111时,表示TCP报文段的首部长度为60字节。


保留

大小:6字节

留着日后使用,当前全置0


控制位

紧急URG:URG为1时,代表该报文段有紧急数据,不用在缓存里排队,优先传输。配合后面的紧急指针使用

确认ACK:当ACK=1时,上面的确认号字段才有效,ACK=0时无效,连接建立后,所有的的报文段都必须把ACK置为1

推送PSH:当PSH=1时,接收方会直接交付该报文段(不是整个接收缓存)给上层应用程序,不需要等待接收缓存满(很少使用该操作)

复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后重新建立连接,可用于拒绝非法报文段或拒绝打开一个连接

同步SYN:当SYN=1&&ACK=0时,表明这是一个连接请求报文段,若对方同意建立连接,则应在响应报文段使SYN=1&&ACK=1,连接请求 / 连接接受的报文的SYN才为1,其他一般为0。后面的三握四挥再深入了解

终止FIN:当FIN=1时:表面该报文段数据发送完毕,要求释放连接。


窗口

大小:2字节

指发送该报文段的一方的 接收窗口大小(即接收缓存还可接收的数据大小),当接收缓存满时,会发送窗口为0的报文段给发送方,阻塞接收报文段,当程序读取接收缓存数据时恢复。


检验和

大小:2字节

与UDP检验和过程类似


紧急指针

大小:2字节

只有在上面紧急URG=1时才有效,指出本报文段中的紧急数据的字节数,即使窗口为0也可发送紧急数据


选项

选项内容有:最大报文段长度MSS、窗口扩大、时间戳、选择确认等。。。


填充

用来填充TCP首部长度为整数(4B的倍数)


TCP连接管理

TCP连接管理有三个阶段:连接建立、数据传送、连接释放

需客户端主动向服务器端进行连接建立


连接建立

三次握手阶段

过程(与图中一样):

  1. 客户端向服务器发送序号seq=x(由客户端随机分配)、同步SYN=1、确认ACK=0的连接请求报文段,该报文段无应用层数据。
  2. 服务器收到该报文段时,为接收缓存、发送缓存和变量 分配空间,并向客户端返回序号seq=y、同步SYN=1、确认ACK=1、确认号ack=x+1(表示期待收到的下一个报文段序号)的连接接受报文段,该报文段无应用层数据。
  3. 客户端收到该确认报文段后就分配发送缓存和接收缓存,并向服务器返回SYN=0、ACK=1、seq=x+1、ack=y+1的报文段,该报文段客携带数据

注:SYN在连接请求 / 连接接受的报文时才为1,ACK=1是用来让确认号有效


连接释放

四次挥手阶段

过程(与图一样,以客户端主动关闭为例):

  1. 客户端主动发送终止FIN=1、seq=u(随机生成)的连接释放报文段
  2. 服务器返回ACK=1,seq=v,ack=u+1的确认报文段,此时处于半关闭状态
  3. 服务器主动向客户端发送终止FIN=1、ACK=1,seq=w,ack=u+1的连接释放报文段
  4. 客户端返回ACK=1,seq=u+1,ack=w+1的确认报文段,然后等待2MSL(最长报文段寿命的两倍)时间,连接彻底关闭。

等待2MSL 是为了防止 最后的确认报文段丢包,导致服务器没彻底关闭连接(服务器未收到确认报文段时,会有下面会讲的重传机制)


补充:在SYN泛洪攻击中,攻击者通过不断发送大量的伪造源IP的SYN请求给目标服务器,使得服务器不断为每个请求分配资源,并等待对应的ACK响应。由于请求中的源IP是伪造的或不存在的,服务器无法收到ACK响应,从而造成资源的浪费和服务不可用。SYN泛洪攻击是一种比较简单但有效的DDoS攻击方式


TCP传输特性

可靠传输

机制:校验、序号、确认、重传

  • 校验

与UDP校验方法一样,添加伪首部


  • 序号

应该与TCP头的序号理解一样,一个字节占一个序号


  • 确认

当接收方接收缓存中的报文段数据没有交付给应用层时,发送方的接收缓存会保留该报文段,接收方应用层接收后,会给发送方发送确认报文段(累计确认和捎带确认两种方式),确认报文里的确认号为N(来表示前N-1成功接收),发送方才会将发送缓存的前N-1报文段数据删除


  • 重传

如图,此时7、8报文段成功到达但456因为某些原因没到达,接收方依旧发送确认号为4的报文给发送方。发送方就会进行456的重传。

重传机制:

超时重传:超过规定的时间(重传时间)没有收到接收方的确认报文段,就会重传。这里使用自适应算法,动态改变重传时间RTTs(加权平均往返时间)

快速重传:假设报文段1、2、3、4、5,报文段的1、3、4、5被接收方接收了,但2没有,因此接收方一直返回确认号为2的报文段(即冗余ACK(又叫冗余确认)),当发送方收到3个这样的报文段,就会进行重传


流量控制

滑动窗口机制

接收方设置好确认报文段的窗口字段 将rwnd(接收窗口)告诉发送方,发送方的发送窗口取rwnd(接收窗口)和cwnd(拥塞窗口)的最小值

个人tips(可能有误):接收方的接收缓存的可用空间大小==接收窗口大小

当不考虑拥塞窗口时,发送方发送窗口的大小==接收方接收窗口大小

发送窗口可动态变化

接收窗口:由接收方 根据接收缓存空间设置,反映接收方可用容量

拥塞窗口:由发送方 根据网络拥塞程度设置,反映网络当前容量

当发送方接收到一个窗口值为0的确认报文段时,会启动持续计时器,当持续计时器到期时,发送方会发送一个零窗口探测报文段,接收方收到这个报文段时会返回现在的窗口值(以上是为了防止接收方的确认报文段丢失,并且发送方接收到的前一个报文段的窗口值为0时,导致的互相等待的情况)


拥塞控制

拥塞:某段时间,对网络中某一资源的需求超过了该资源所能提供的部分,导致网络性能变差。

图解拥塞控制和流量控制区别:


拥塞控制算法

前提假设:1、一方传送数据,另一方只传送确认;2、发送窗口取决于拥塞窗口

  • 慢开始+拥塞避免

过程略

  • 快重传+快回复

过程略

posted @ 2023-09-09 22:20  ^cyi^  阅读(36)  评论(1编辑  收藏  举报