加载中...

数通 03-TCP和UDP原理


TCP和UDP原理

1. 端口

每个应用程序进出网络都需要经过一个唯一端口,通过端口号来识别数据交由哪个应用程序处理

服务器:固定端口号(TCP 80)

客户端:1024以上随机端口

常见知名端口号:

TCP80  HTTP  超文本传输协议
TCP20 21  FTP  文件传输协议
TCP23  TELNET  远程登录
TCP25  SMTP  简单邮件传输协议
UDP53  DNS  域名解析协议
TCP443  HTTPS  HTTP over SSL

tcp

2.TCP原理

TCP的建立连接

TCP运输连接有以下三个阶段:

  • 建立TCP连接,也就是通过三报文握手来建立TCP连接。
  • 数据传送,也就是基于已建立的TCP连接进行可靠的数据传输。
  • 释放连接,也就是在数据传输结束后,还要通过四报文挥手来释放TCP连接。

TCP的运输连接管理就是使运输连接的建立和释放都能正常的进行。

2.1 TCP头部封装格式

源端口: 占16比特,写入源端口号,用来 标识发送该TCP报文段的应用进程。 目的端口: 占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程。

序号: 占32比特,取值范围[0,2^32-1],序号增加到最后一个后,下一个序号就又回到0。指出本TCP报文段数据载荷的第一个字节的序号。

确认号: 占32比特,取值范围[0,2^32-1],确认号增加到最后一个后,下一个确认号就又回到0。指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据。

确认标志位ACK: 取值为1时确认号字段才有效;取值为0时确认号字段无效。TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置1。

数据偏移: 占4比特,并以4字节为单位。用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。这个字段实际上是指出了TCP报文段的首部长度。

窗口: 占16比特,以字节为单位。指出发送本报文段的一方的接收窗。

同步标志位SYN: 在TCP连接建立时用来同步序号。终止标志位FIN: 用来释放TCP连接。复位标志位RST: 用来复位TCP连接。

推送标志位PSH: 接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。

校验和: 占16比特,检查范围包括TCP报文段的首部和数据载荷两部分。在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。

紧急指针: 占16比特,以字节为单位,用来指明紧急数据的长度。

填充: 由于选项的长度可变,因此使用填充来 确保报文段首部能被4整除,(因为数据偏移字段,也就是首部长度字段,是以4字节为单位的)。

2.2 TCP可靠性机制

2.2.1 确认机制

Seq = 上一次Ack
Ack = 上一次Seq+length
如果没有接到,或接收到是不完整数据,会再次发送Ack请求对方重发

2.2.2 三次握手

2.2.3 四次挥手

由于TCP连接是全双工的,断开一个TCP连接,需要客户端与服务器发送四个包来确认连接的断开
简述四次挥手的过程:

1·因为TCP是全双工的,因此,每个方向都要单独关闭
2·当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着
3·一方向不会再收到数据了,但是这个TCP连接上仍然能够发送数据,直到这一方也发送了FIN.
4·首先进行关闭的一方执行主动关闭,另一方执行被动关闭.第一个关闭的最后等待2MSL

第一次挥手:

1·Client将FIN置为1,序号seq=M,发送给Server,进入FIN_WAIT_1状态

第二次挥手

1·Server收到后,将ACK置为1,ack=M+1,响应给Client,进入CLOSE_WAIT状态
2·Client收到响应后,进入FIN_WAIT_2状态

第三次挥手

1·Server在结束所有数据传输后,将Fin置为1,seq=N+1,发送给Client,进入
2·LAST_ACK状态

第四次挥手

1·Client收到后,将ACK置为1,ack=N+1,响应给Server,进入TIME_WAIT状态,等待
2·2MSL后,进入CLOSED状态
3·Server收到后,进入CLOSED状态

2.2.4 RST结束连接

收到RST置位的包后,立即结束TCP连接。

发出RST置位的包后,不必等待对方的确认,直接结束TCP连接。

2.2.5 窗口机制

滑动窗口

​ 通过通告对方本机接收能力,来实现流量控制。

2.2.6 完整性校验

通过Checksum来检查数据完整性。

2.3 TCP特征

优点:传输可靠性高

缺点:占用带宽高,传输延迟高

2.4 TCP的适用场景

对数据完整性要求高,但对传输延迟要求低。

3. UDP的原理

3.1 UDP特征

优点:占用带宽低,传输延迟高

缺点:没有任何可靠性机制

3.2 UDP的适用场景

对传输延迟要求高,但数据完整性要求低


文章作者: okra2saber
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 okra2saber !
评论
  目录