带你吃透传输层协议,掌握TCP,UDP分分钟(含三次握手和四次挥手原理以及TCP报文,UDP报文,常见的协议及其对应的端口)

前言:

TCP/IP协议簇的传输层协议主要有两个,TCP(Transimission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)

一:TCP协议介绍

■TCP是面向连接的、可靠的进程到进程通信的协议
■TCP提供全双工服务,即数据可在同一时间双向传输
■TCP报文段
●TCP将若干个字节构成一个分组, 叫报文段(Segment)
●TCP报文段封装在IP数据报中

二:TCP报文格式

2.1:TCP报文段

TCP将若干个字节构成一个分组,成为报文段。

TCP报文段封装在IP数据报中。

2.2:TCP报文段格式

在这里插入图片描述
源端口号:16位字段,为发送方进程对应的端口号。

目标端口号:16位字段,对应的是接收端的进程,接收端收到数据后,根据这个端口号来确定吧这个数据送给哪个应用程序的进程。

序号:当TCP从进程接收数据字节时,就把他们存储在发送缓存中,并对每一个字节进行编号。

确认号:确认号是对发送端的确认信息。用它来告诉发送端这个序号之前的数据段都已经收到。如确认号是X,就表示前X-1个数据段都已经收到。

首部长度:一般是20字节,最大可以扩展为60字节。用它可以确定首部数据结构的字节长度。

保留:作为今后扩展功能使用,现在还没有使用到。

控制位:这六位作用很重要,TCP的连接,传输和断开都受这六个控制位的指挥。各位的含义如下。

URG:紧急指针有效位。只有0和1,1表示指针开启。数据传输时,先放在缓存(内存)中,临时保存起来,紧急指针位是指可以在内存中优先提取数据。

PSH:标志位=1时要求接收方尽快将数据段送达应用层。即PSH=1时,不经过缓存,直接将数据段送达应用层。优先级高于URG。

ACK:确认位。只有当ACK=1时,确认序列号才有效。当ACK=0时,确认序列号字段无效。

SYN:连接位。同步序号位,TCP需要建立连接时将这个值设置为1.谁提出建立连接请求,谁把SYN设为1.

FIN:断开连接标识。发送端完成发送任务位,当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设置为1.

RST:重新建立连接TCP连接时使用。,当RST=1时,通知重新建立TCP连接。

窗口大小:用于说明本地可接收数据段的数目,窗口大小是可变的。当网络通畅是窗口值变大可以加快传输速度,当网络不稳定时减小这个值可以保证网络数据的可靠传输。TCP协议中的流量控制机制就是依靠变化窗口值的大小实现的。

校验和:用来做差错控制。在发送TCP数据段时,由发送端计算校验和,到达目的地时再进行一次校验和计算。若两次校验和一致,则说明数据基本是正确的,否则将认为数据已被破坏,接收端将丢弃数据。

紧急指针:和URG配合使用,当URG=1时有效。

选项:在TCP首部可以有多达40字节的可选信息。

2.3:重点注意:

计算机中传输中通过0和1进行传输。
●SYN:同步序号位,TCP需要建立连接时将该值设为1
●ACK:确认序号位,当该位为1时,用于确认发送方的数据
●FIN:当TCP断开连接时将该位置为1

三:TCP三次握手

在这里插入图片描述

3.1:第一次握手

建立连接过程:PC1发送建立连接请求,SYN标志位设为1。

3.2:第二次握手

这一次握手实际上分为两部分来完成。

第一部分:PC2收到PC1的请求,向PC1回复一个确认信息,此过程的典型标志就是TCP的ACK控制位为1。且确认序列号是PC1的初始序列号加1.

第二部分:PC2收到请求后需要回复。即PC2也向PC1发送建立连接的请求,此过程的典型标志和第一次握手一样,即TCP的SYN控制位为1.

为了提高效率,一般将这里两个部分合并在一个数据包里实现。

3.3:第三次握手

PC1收到了PC2的回复(包含请求和确认),此时需要向PC2回复一个确认信息,此过程的典型标志就是TCP的ACK控制位为1.且确认序列号是PC2的初始序列号加1.

此时就完成了三次握手

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4:对于上述总结

Seq表示请求序列号。

Ack表示确认序列号

SYN控制位只有在请求建立连接时才被设为1

四:TCP四次挥手

在这里插入图片描述

4.1:第一次挥手

PC1发送 FIN 和 ACK 控制位为1的TCP报文段给PC2.

FIN:断开连接标识,提出断开连接的一方将这个值设为1.

ACK:ACK=1,表示确认序列号字段有效

4.2:第二次挥手

PC2收到PC1的信息,开始回复。

PC2 回复 ACK=1 的 TCP 报文段给 PC1。

4.3:第三次挥手

PC2现在开始主动发送消息给PC1,发送 FIN=1,ACK=1 的报文段给PC1.

即PC2也发消息给PC1,FIN=1,我(也)要和你断开连接。ACK=1,确认序列号字段有效。

4.4:第四次挥手

PC1收到 PC2 的消息,回复ACK=1 的TCP报文段。

ACK=1,确认PC2 发给 PC1 的序列号字段有效。

4.5:半关闭状态

在TCP断开连接(四次挥手)的过程中,TCP一方(通常是客户端)可以终止发送数据,但仍然可以接收数据,成为半关闭。

具体描述一下:

1.客户端发送FIN报文段,半关闭了这个连接,服务器发送ACK报文段接受半关闭。

2.服务器继续发送数据,而客户端只发送ACK确认,不再发送任何数据。

3.当服务器吧所有数据都发送完毕时,就发送FIN报文段,客户再发送ACK报文段,这样就关闭了TCP连接。

4.6:这里我们思考一下问题:

TCP建立连接需要三次握手,为什么终止连接需要四次挥手?(解释在最后)

五:UDP协议介绍

5.1:UDP协议以及优缺点

UDP在实际工作中的应用范围很广,例如,聊天工具QQ在发送短消息时就使用了UDP的方式。

UDP缺点:是一个无连接,不保证可靠性的传输层协议,也就是说发送端不关心发送的数据是否达到目标主机,数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。

UDP优点:UDP的首部结构简单,在数据传输时能实现最小的开销。

5.2:UDP报文的首部格式

在这里插入图片描述

5.3:常见协议及其端口号

:5.3.1:常用的TCP端口号及其功能
21-FTP FTP服务器所开放的控制端口
23-Telnet 用于远程登录,可以远程控制管理目标计算机
25-SMTP SMTP服务器开放的端口,用于发送邮件
80-HTTP 超文本传输协议
110-POP3 用于邮件的接收
:5.3.2:常用的UDP端口号及其功能
69-TFTP 简单文件传输协议
111-RPC 远程过程调用
123-NTP 网络时间协议

答案:TCP在网络中的应用范围很广,主要用在对数据传输可靠性要求高的环境中,如网页浏
览,它使用的HTTP就是依赖TCP提供可靠性的。在使用TCP时,通信方对数据的可靠性要
求高,即使因此降低了–些数据传输率也是可以接受的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章