数据通信与网络--2.传输层协议——TCP协议和UDP协议

CSDN上的大佬们实在太多了,只是记录一下这个星期学习的内容,请多多指教

------------------------------------------------------------------------------

前提须知

  1. TCP的运行机制:连接(三次握手),数据传输,断开(四次挥手)
  2. TCP为应用层提供全双工服务,这意味着 数据能在两个方向上独立的进行传输,因此连接的两断 必须要保证每个方向上的传输数据都断开。
  3. 在PC1发出FIN,且PC2同意后(关闭C到S单路),PC2还会继续发送未发完的数据包
    因为TCP是双工通道的,S到C单路未关闭
  4. RST:一般是在FIN之后才会出现为1的情况,表示的是连接重置。
    一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;
    SYN和SYN+ACK:而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接

TCP

TCP头部参数

TCP头部在这里插入图片描述
TCP头部参数

TCP头部参数

序号参数解释详释
1S.Port (Source port)源端口数据发送方 的空闲端口,被随机选择的端口
2D.Port (Destination port )目的端口被访问设备的端口,端口常由应用指定,代表访问的应用、服务类型
3序列号 (Sequence number)本段发送的每个TCP消息中的 序号值 不一样(作用:用来区分不同的TCP消息)
4确认序列号 (Acknowledgement number)对于收到的TCP消息进确认(对收到的TCP消息的序列号值+1表示确认)
5头部长度 (Header length)段头的长度,表示TCP头部大小最小(固定部分)20Bit;最大60Bit
6保留字段 (Reserved )未定义,保留未使用的部分
7控制字段 (Control bits )SYN取值为1,代表该消息 用于请求建立TCP连接
FIN取值为1,代表该消息 用于请求断开TCP连接
ACK取值为1,代表该消息的 确认序列号有效
RST取值为1,代表该消息 重新建立连接、断开连接
8窗口字段 (Window)用于实现滑动窗口的机制代表本设备最大的接收处理能力
9校验 (Checksum)检查数据段段头的完整性
10紧急指针位 (Urgent)表示数据段 携带应用层数据 需要紧急处理提高优先级
11可选项 (options)代表TCP协议的可选功能,最大长度40bit,例如认证功能

TCP的3步骤 || 连接建立(三次握手)|| 数据传输 || 连接断开(四次挥手)

在这里插入图片描述

在这里插入图片描述

1. TCP的 || 连接建立(三次握手)

在这里插入图片描述

三次握手
在这里插入图片描述第一次:C–>S 192.168.73.235 --> 52.5.239.142 SYN:请求建立C到S单路
第二次:S–>C 52.5.239.142 --> 192.168.73.235 ACK:同意建立C到S单 路:SYN:请求建立S到C单路
第三次:C–>S 192.168.73.235 --> 52.5.239.142 ACK:同意建立S到C单路
TCP连接双通道建立成功

2. TCP的 || 数据传输

在这里插入图片描述在这里插入图片描述
在数据传输的过程中,我们能在wireshark观测到的数据,就是极大变化的Seq\Ack\Win\Len等数据

  1. Seq序列号,Ack确认序列号=Seq+接收到的数据包长度
  2. Win窗口字段
  3. Len 数据包bit长度
滑动窗口机制

确认应答机制,对每一个发送的数据都对应有一个ACK确认应答。
但是这样采取一发一收的方式 有一个很大的缺点就是 效率太差,为了提高效率采用滑动窗口,即一次性发送多个数据
在这里插入图片描述

  1. 在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)。
  2. 连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。
  3. 接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。
  4. 接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。
  5. 发送方根据接收方当前的Window大小发送相应数量的数据。

大牛详解: 【计算机网络】TCP协议详解.

重发机制

超过一定时间,还没有收到确认应答的数据包,就需要重新发送

3. TCP的 || 连接断开(四次挥手)

在这里插入图片描述

在这里插入图片描述

TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。
如图所示:

  1. 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;
  2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。
  3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。
  4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。

在这里插入图片描述在这里插入图片描述
第一次:C–>S 192.168.73.235 --> 52.5.239.142 SYN:请求拆除C到S单路
第二次:S–>C 52.5.239.142 --> 192.168.73.235 ACK:同意建立C到S单路:SYN:请求拆除S到C单路
第三次:C–>S 192.168.73.235 --> 52.5.239.142 ACK:同意拆除S到C单路
(看不出第二次有分开两次发送数据)

RST连接重置

一般是在FIN之后才会出现为1的情况,表示的是连接重置。
一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;

在这里插入图片描述

UDP

在这里插入图片描述

UDP头部参数

在UDP头部参数

小细节

TCP ACK值的变化

过程ACK值的变化
三次握手ACK=Seq+1
数据传输ACK=Seq+数据长度
四次挥手ACK=Seq+1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值