程序员网络工程师

5.TCP与UDP-传输层

2020-07-12  本文已影响0人  見贤思齊_
3~5分           集中在上午题       牢记:端口号及功能用途。

零、基本概念

TCP/UDP(或TCP/IP)保留的传输层端口号范围是 1~65535公认端口:1~1023动态端口:1024~65535

1.面向连接

面向连接: 优点:可靠丢包少(因为有专属通道)。

​ 缺点:复杂(每次都要进行三步操作:建立连接、使用连接、释放连接。其实就是建立通信线路),耗资源,利用率低 (建立专属通道)

2.无面向连接

优点:开销小(不需要连接),迅速灵活。

​ 缺点:易丢包。

一、TCP(传输控制协议):用于精准的数据传输

TCP是面向连接形式的可靠服务,以字节流形式传输。

TCP是建立在无连接的IP基础上。TCP报文包含在IP数据报中进行传送。TCP和IP是配合工作的,所以有些参数可直接传送给IP层处理,TCP头和IP头合在一起使用

1.TCP传输特性

可靠的传输服务。

面向连接

有序

全双工通信。

缓冲累积传送(缓冲区)。

可变滑动窗口 (窗口:调流控流的工作)。

(1)TCP 3 种机制:

1.序号:用序号对乱序的数据包进行重组变成有序的数据包,从无序变有序。

2.补包:再把数据包进行排序,纠错检错的功能,确认有没有收到包,若没有收到,让发送者再发送一次。

3.窗口:利用窗口控制数据流量的传输。

2.TCP传输头

TCP传输头格式.png

(1)TCP的传输头需要记忆的重要字段

TCP传输头重要字段.png
① 源端口、目标端口(重点)

各占 16 位。

源端口:说明源服务访问点

目标端口:表示目标服务访问点

(端口号就是在这里,端口号范围是 1~65535)

② 发送、接收顺序号:

占 32 位

序号范围:[0 , 2^32-1] 。

③ 偏置值

4位。也叫TCP头部长度。

表示tcp头部有多少个32bit字(4字节),因为4位最大值是15个32bit,所以最多有480bit,也就是60个字节是最大的tcp头部长度。

④ 标记字段:(重点牢记)

占 6 位

Ⅰ.URG

紧急指针是否有效。

若有效也就是URG=1,会告诉系统有紧急数据需要尽快传送

Ⅱ.ACK:

接收顺序号有效(确认号)。

只要确认连接,他就会返回一个ACK,初始值为1。若ACK为9那么9-1之前的已经接收。

携带ack标志的报文段也称确认报文段。

Ⅲ.PSH:

推进功能有效,接收方收到报文,向上级发送。

提示接收端应用程序应该立即从tcp接受缓冲区中读走数据,为后续接收的数据让出空间

Ⅳ.RST:

复位,连接复位为初始状态

RST=1,表示TCP出现严重错误,需要释放连接,要求对方重新建立连接。带RST标志的tcp报文段也叫复位报文段

Ⅴ.SYN:

建立连接的同步顺序号,建立连接

表示建立一个连接,携带SYN的tcp报文段为同步报文段

Ⅵ.FIN:

释放连接(挥手时才会出现)。

表示告知对方本端要关闭连接了。

携带FIN的TCP报文段为连接释放报文段。

⑤ 窗口(进行流量控制)

16位。控制字节流大小。

若窗口为 6 ,则最大能接受6个报文,超过6会发生丢包。

Ⅰ.TCP流量控制协议

TCP使用的流量控制协议是可变大小的滑动窗口协议,这种协议把肯定应答信号与扩大窗口的信号分开更适合建立在不可靠网络上的远程连接使用

可变大小的滑动窗口协议:由接收方指明接收绥冲区的大小(字节数),发送方发送了规定的字节数后等待接收方的下一次请求固定大小的滑动窗口协议用在数据链路层的HDLC中。可变大小的滑动窗口协议可以应付长距离通信过程中线路延迟不确定的情况,而固定大小的滑动窗口协议则适合链路两端点之间通信延迟固定的情况

⑥ 校验和(重点)

占16位

校验包含TCP头部 和 TCP数据部分,比如:利用CRC校验。

⑦ 紧急指针:

与顺序字段进行相加,表示紧急数据最后一个字节

3.TCP三次握手(重点:标志字段是怎样的)

(1)流程

双方通信之前均处于CLOSED状态。

TCP三次握手.png
① 第1次握手

A > B 发送请求,B知道A要建立连接SYN

首先,源主机A发送一个SYN标志置位的段,比如SYN=X,其中的发送顺序号位某个值X称为初始顺序号(ISN

Ⅰ.状态

源主机A从CLOSED状态进入SYN-SENT状态

目标主机B从CLOSED状态进入LISTEN状态,此时B还未收到A的请求。

② 第2次握手

B > A 发送应答,让A知道B收到连接请求了。SYN、ACK

其次,目标主机B以SYN、ACK标志字段响应;其中,应答顺序号ACKX+1(即ACK=X+1,表示希望从第X+1个字节处开始接收数据)建立连接的同步顺序号SYN为某个值Y(目标主机B指定的ISN,即SYN=Y)

Ⅰ.状态

源主机A从SYN-SENT状态进入ESTABLISHED状态

目标主机B从LISTEN状态进入SYN-RCVD状态,此时B已经收到来自A的请求。

③ 第3次握手

A > B 发送应答,让B知道A收到了回应。ACK

最后,第2次握手中的段SYN=Y、ACK=X+1到达源主机A后,源主机A以ACK标志置位响应,应答顺序号为Y+1(即ACK=Y+1,表示希望从第Y+1个字节处开始接收数据),连接就正式建立;并发送数据DATA=X+1

Ⅰ.状态

目标主机B从SYN-RCVD状态进入ESTABLISHED状态

(2)目的

TCP协议使用三次握手过程建立连接,这种方法可以防止出现错误连接

大部分错误连接是由于迟到的或网络中存储的连接请求引起的。

由于三次握手过程强调连接的双方都要提出自己的连接请求标识,也要应答对方的连接请求标识,所以不会受到过期的连接请求的干扰。

(3)补充

  • 若一个TCP连接处于ESTABLISHED状态这表示连接已经建立

4.TCP4次挥手(重点)

TCP4次挥手1.png

(1)流程

双方通信之前均处于ESTABLISHED状态。

第 1 次:A > B 发送连接释放报文(FIN=1),停止发送数据。

第 2 次:B > A 发送确认报文(ACK),表示收到释放报文。

第 3 次:B > A 发送连接释放报文(FIN),此报文在最终数据传送完成时发送

第 4 次:A > B 发送确认报文ACK),最后完成连接的释放。

5.TCP拥塞控制(考点)

目的是和流控机制配合,缓解互联网通信紧张状况,报文到达速率大于路由节点转发速率

慢启动cwnd <= ssthresh (恢复TCP Tah)

拥塞避免cwnd >= ssthresh

快重传中有 快恢复(TCP Reno)

RTT:一个往返需要的时间。

RTTS:平滑的往返时间(1-x)*

RTO:重传超时。RTTS+4RRT

(1)解决方案

以下方式结合流量控制方法如滑动窗口控制和选择重发ARQ可完成拥塞控制的效果

① 重传计时管理

TCP针对每一次发送的报文段设置计时器,当计时器设置的时间结束时还未收到确认,就进行重传当前报文段

重传时间受当前网络时延等动态因素影响,所以大多采用观察最近一段时间的报文时延估算重传时间。

② 慢启动

发送端使用的窗口逐渐从小增大,直到出现丢帧或者达到事先设定的窗口阈值,将窗口重新设回最小再次开始慢启动

Ⅰ.例

比如说,窗口阈值设定为 5,窗口值从1逐渐增加到5,若是在增加的过程中丢帧,窗口值从1再逐渐增加;若是窗口值达到窗口阈值 5,窗口值从1再逐渐增加。

③ 拥塞避免

窗口大小达到阈值后,开始按照线性递增的方式加大窗口(比如1次增加1个),每当发生拥塞,阈值就减半

Ⅰ.例
④ 快速重传

发送端连续收到3个相同的确认,就重传确认报文的下一段,无需计时。

TCP快速重传.png

二、UDP(用户数据报协议):用于音视频信号传输

1.UDP传输特性

  • 提供无连接的传输服务(也就是没有专属通道)。
  • 不可靠,甚至可以对用户数据不进行校验(当UDP校验和字段为0),所以不具备差错检验和重传、流量控制等功能。
  • UDP协议在IP层之上提供了端口寻址能力。

(1)优缺点

优点:开销小(不需要连接),迅速灵活。

缺点:易丢包。

2.UDP头

UDP头.png

源端口、目标端口、段长、校验和 16位。

数据(不是16位的倍数需加填充位。)

三、TCP、UDP校验和区别

1.相同

  • UDP计算校验和的方法和计算IP数据报首部校验和的方法相似。
  • TCP、UDP均提供端口寻址功能。
  • TCP面向连接;UDP无连接。
  • 源端口出现在两个报文头部中。

2.不同

  • IP数据报的校验和:只检验IP数据报的首部。但UDP的校验和:将首部 和 数据 部分一起都检验
  • TCP有顺序号并借此进行流量和差错控制;UCP无连接所以没有顺序号。
上一篇 下一篇

猜你喜欢

热点阅读