本质:进程之间的通信
进程间的通讯流程
“逻辑通信”是指运输层之间的通信好像是沿水平方向传送数据,但事实上,这两条数据并没有一条水平方向的物理连接,要传送的数据是沿着图中上下多次的虚线方向传送的
我们通讯的本质还是网络1中的一台计算机中的某个进程与另一个网络2中的某个进程之间的通讯,例如QQ,微信,我们的网络层解决了不同网络中的通讯问题,数据链路层解决了同一网络中的链路之间的的通讯问题,物理层负责传输bit流,到此我们只是讲2个网络中的主机联系起来,我们QQ和微信则是运行在计算机的一个进程,进程占用计算机端口,由此我们运输层解决的就是这么一个问题,就是我们同通过一台主机中的一个进程,与另一台计算机的另外一个进程完成通信!
举个例子:FTP协议(文件传输协议)
当我们的两台主机需要进行文件传输的话,需要满足这个应用层协议,如:我们从本机向Linux的服务器上上传文件,我们可以将服务器看作一个FTP服务器,我们本机访问需要访问服务器的21端口,选择ftp协议
、
我们通过DNS服务器解析出该域名对应的ip地址
之后,将UDP用户数据报封装在IP数据报中,通过以太网发送给DNS服务器
现在用户PC中的HTTP客户端进程可以向Web服务器发送HTTP请求报文(和DNS发送和接收流程差不多)
UDP 和 TCP 是TCP/IP体系结构运输层中的两个重要协议
两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。
可以发送广播
可以向某个多播组发送多播
还可以发送单播
运输过程
UDP向上层提供无连接不可靠传输服务
UDP结构
使用TCP协议的通信双方,在进行数据传输之前,必须使用“三报文握手”建立TCP连接
TCP连接建立成功后,通信双方之间就好像有一条可靠的通信信道,通信双方使用这条基于TCP连接的可靠信道进行通信
运输过程
举例
上图主机A现在可将发送缓存中序号1~200的字节数据全部删除,因为已经收到了主机B对它们的累计确认
上图主机A现在可将发送缓存中序号201~500的字节数据全部删除,因为已经收到了主机B对它们的累计确认
上图主机A现在可将发送缓存中序号501~600的字节数据全部删除,因为已经收到了主机B对它们的累计确认
网络拥塞往往是由许多因素引起的。例如:
拥塞控制的一般原理
开环控制和闭环控制
监测网络的拥塞
主要指标有:
上述这些指标的上升都标志着拥塞的增长。
下图的实例横纵坐标的意思
传输轮次:
拥塞窗口:
拥塞窗口(cwnd):初始拥塞窗口值:2 种设置方法。窗口值逐渐增大。
如果在发送过程中出现部分报文段丢失,这必然会造成发送方对这些丢失报文段的超时重传
这个时候又回到了慢开始
两个算法完整示意图
补充一下:
简述:当即使发送的报文段失真,也让我们的接受方重复返回上一个正常接受的报文段,避免造成发送方误以为发生拥塞
改进后的整体算法的示意图
RFC6298建议使用下式计算超时重传时间RTO
往返时间RTT的测量比较复杂
TCP超时重传的计算
总结
“握手”需要在TCP客户端和服务器之间交换三个TCP报文段
TCP服务器进程是被动等待来自TCP客户端进程的连接请求,因此成为被动打开连接
TCP客户进程也是首先创建传输控制块
由于TCP连接建立是由TCP客户端主动发起的,因此称为主动打开连接
为什么TCP客户进程最后还要发送一个普通的TCP确认报文段?能否使用“两报文握手”建立连接?
下图实例是“两报文握手”
TCP客户进程在发送完最后一个确认报文后,为什么不直接进入关闭状态?而是要进入时间等待状态?
TCP双方已经建立了连接,后来,TCP客户进程所在的主机突然出现了故障
TCP服务器进程以后就不能再收到TCP客户进程发来的数据
因此,应当措施使TCP服务器进程不要再白白等待下去
源端口和目的端口
序号、确认号和确认标志位
同步标位、终止标志位、复位标志位、推送标志位、紧急标志位和紧急指针
选项和填充
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/m0_46571920/article/details/121153761
内容来源于网络,如有侵权,请联系作者删除!