目录

计算机网络5-第五章-运输层进程间的通信问题收发件人双方如何确认

计算机网络5 第五章 运输层——进程间的通信问题(收发件人双方如何确认)

  • 运输层是基于网络层的运输。网络层提供底层连接,运输层则是依赖于虚电路/数据报服务实现进程间通信的
  • 发送端进程把数据(信件)放进自己的“邮箱”
  • 网络层负责把“信件”从发送端的“邮箱”送到接收端的“邮箱”
  • 接收端进程从自己的“邮箱”中取出数据

回应这些问题:

UDP/TCP有什么特点?可以用于什么?
TCP是如何连接的?(套接字作为邮箱接口)
TCP的结构如何?尤其是头部要掌握哪几个部分?代表什么意思?
TCP有哪两种传输方式?(停止等待协议、滑动窗口AQR协议)
TCP如何找到最大不拥塞传输量的?(大题)
TCP如何处理连接和释放的?

https://i-blog.csdnimg.cn/direct/da519022f811421e93f7f84fd1f7bf92.png

1 用户数据报协议UDP

udp不考虑精度,开销小,只考虑速度,可以在不可靠介质传播,用于打视频电话、视频会议。
因此是一对多的。

https://i-blog.csdnimg.cn/direct/8a9180a1d0f44464aca3f97d22da366c.png

https://i-blog.csdnimg.cn/direct/a83d640aca274f33947093b894800fc0.png

2 传输控制协议TPC ★

我和你写邮件,一对一的,且是可靠的,而且可以同时写信手信。

TCP是基于网络层的虚连接传输的,文档可以切割为字节流,并缓存发送,因此按照字节流传输
UDP是基于网络层的数据报服务传输的,传输视频不能切成字节流,因此要按报文传输

将报文切割为数据块,并编号,用于传输后重组。

https://i-blog.csdnimg.cn/direct/efaedd8cf42c4dc19618c627b91584df.png

2.2 TCP的连接

TCP 连接的端点:套接字(Socket)

1. 什么是套接字?

  • 套接字(Socket)是一个通信端点,用于标识网络中的一个进程。
  • 它由两部分组成:IP 地址 + 端口号(进程端口)

2. 套接字的作用

  • 在 TCP 连接中,每个端点都有一个唯一的套接字。
  • 发送端和接收端通过各自的套接字进行数据交换。

3. 套接字的表示方式


套接字 = (IP地址 : 端口号)

https://i-blog.csdnimg.cn/direct/13ffbafaaa4243c28dbea2c86c5a5bcb.png

2.3 TCP的首部格式

序号——代表当前数据块的编号
确认后——代表下一个要重组的数据块编号
控制位:
ACK确认位:确认TCP是否建立连接(1)
SYN同步位:确认两设备是否同步(1)

3 TCP可靠传输的实现

3.1 停止等待协议——超时协议看门狗WTD

接受后必须返回一个确认信号ACK,如果超时就会重新发送

https://i-blog.csdnimg.cn/direct/f64173b664d9488b84b069b8cadc978d.png
https://i-blog.csdnimg.cn/direct/5bf66ba6175b4aebab57a648bad2742a.png

3.2 连续ARQ协议

1 滑动窗口型

2 同时发送窗口大小的分组,以接收到最后一个分组的ACK信号为准。

https://i-blog.csdnimg.cn/direct/35caa76db6784dc0a4cb4285855c548d.pnghttps://i-blog.csdnimg.cn/direct/b0ee2636cf824e628e6111485597ad45.png

比如一次要传输5个分组,可以将两个分组放入缓存中,发送,当收到接受的ACK信号后,按照确认号,继续发送剩下的3个分组。

题目

https://i-blog.csdnimg.cn/direct/3555db96ec89467cb2099e4c984bae63.png

4 TCP流量控制与拥塞控制 ★——ARQ协议下如何找到最高效的传输方式

流量控制:传的太快,来不及接受丢包

拥塞控制:堵了的话传输速度不够会丢包

https://i-blog.csdnimg.cn/direct/cd3a8e15e2bc4ff0bdfa68ccf882beec.png

https://i-blog.csdnimg.cn/direct/bbacf82dfa1a4db5ab68e3b7d64d1e3b.png

回应30分钟左右的阻塞控制:
Q1:为什么超时后要置为一重新慢开始?而不是把cwmd减一重新发送?
A1:超时意味着“严重拥塞”,不是“轻微丢包”,不是减一能解决的,要重新尝试合理的cwnd。 Q2:那个连续三次的ACK是什么意思?
A2:3个重复的AKC意味着据数包乱序到达,但比超时好,说明至少有一个包丢了,但后续包到了,但还是丢包了,因此也要降低cwmd重新慢开始。

答案核心:超时意味着“严重拥塞”,不是“轻微丢包”

🚨 关键区别:
信号含义网络状态判断
3 个重复 ACK数据包乱序到达,说明至少有一个包丢了,但后续包到了网络还在工作,只是轻微拥塞
超时(Timeout)完全收不到任何 ACK,连重复 ACK 都没有网络可能“瘫痪”或严重拥塞

5 TCP的运输连接管理

5.1 TCP的连接方式——三次握手

https://i-blog.csdnimg.cn/direct/b5298fa825714de185a92ef63fd244a2.png

客户机A自启动,B被动启动。
A向B发送连接请求,包括同步位SYN=1信号序号seq=x(A不确定前一次信号序号是多少)
B开机后处于监听listen状态,收到A的请求后返回 同步信号SYN=1确认(连接)号ACK=1B给A的信号序号(B不确定前一次信号序号是多少)seq=y、以及期望收到的信号序号ack=x+1(A发送信号的下一位)

A收到返回后进入建立连接状态,同时向B发送 确认(连接)号ACK=1信号序号seq=x+1(B刚刚期待A返回的序号)、以及期望收到的信号序号ack=y+1(B发送信号的下一位)

ack——期望对方下一条信号的序号
seq——当前A给B发送的信号序号
ACK——是否连接,连接过程中都要携带ACK=1
SYN——请求同步信号,只有请求时携带
FIN——终止请求信号

5.2 TCP的断开方式——四次握手

https://i-blog.csdnimg.cn/direct/72b96303c63a4d15adb349f2c061bbf3.png

客户机A先向B发送终止请求信息FIN=1当前信号序号seq=u
然后B收到后回复连接保持信号ACK=1当前信号序号seq=v(B不知道前一次B向A发送的信号序号)、希望得到的回复信号序号ack=u+1,此时A进入等待终止状态1.
此时仅断开了A->B的发送连接,B进入等待关闭状态,B仍然可以向A发送信息,A处于等待终止状态2
B发送完后,也向A发送终止请求信息FIN=1当前信号序号seq=w希望得到的回复信号序号ack=u+1、以及仍然保持连接的信号ACK=1
A收到信息后发送最后的保持连接信息ACK=1当前信号序号seq=u+1期望信号序号ack=w+1、并等待2MSL,如果发送失败还有机会再次发送。
B收到信号后进入关闭状态A等待2MSL后进入关闭状态

题目

连接与断开的发送内容

https://i-blog.csdnimg.cn/direct/65ac2d8c3e444e10be412fffc8a8eb78.pnghttps://i-blog.csdnimg.cn/direct/9ca04d3164244e6f9afbbaee84087b66.pnghttps://i-blog.csdnimg.cn/direct/529daafc0b434c3586fc79daedb245bd.pnghttps://i-blog.csdnimg.cn/direct/81a29256009e4d11b12313f15cf5ab58.png