计算机网络——传输层

网络层为主机之间提供逻辑通信、传输层为应用进程之间提供端到端的逻辑通信

传输层有着重要的功能就是:复用(在发送方不同的用户进程可以使用同一个传输层协议传送数据,)和分用(接收方可以把这些数据正确交付目的应用进程)

运输层要对收到的报文进行差错检测、传输层向高层用户屏蔽了下面的网络核心的细节,它使应用进程看见的就是好像在两个传输层实体之间有一条端到端的逻辑通信通道

|-------------------------|------------------------|
| UDP用户数据报协议 | TCP传输控制协议 |
| 不可靠信道 | 全双工的可靠信道 |
| 无连接的。不提供可靠交付 | 提供可靠的、面向连接的运输服务 |
| 数据单元:UDP数据报 | 数据单元:TCP报文段 |
| 尽最大努力交付 | 提供可靠交付 |
| 面向报文 | 面向字节流(不丢失,不乱序,不阻塞、无边界) |
| 没有拥塞控制 | 点到点 |
| 支持一对一、一对多、多对多、和多对一的交互通信 | |
| 首部开销小只有8个字节 | |

在协议栈层间的抽象的协议端口是软件端口,软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址

TCP/IP 的运输层用一个16位的端口号(共有65535个)来标志一个端口、端口号只具有本地意义,

两个计算机中的进程要相互通信要知道IP地址+端口号

服务端使用的端口:① :熟知端口/系统端口:0-1023(FTP:21,telnet:23,SMTP:25;DNS :53;TFTP:69;HTTP:80;SNMP:161;SNMP(trap):162;HTTPS:443

②登记端口:1024-49151

客户端使用端口:49152-65535

UDP检验和是把首部和数据部分一起检验

虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。

TCP连接是一条虚连接(逻辑连接),不是一条真正的物理连接,TCP 对应用进程一次把多长的报文发送到 TCP 的缓存中是不关心的。 发送方 TCP 根据接收方消耗数据的速度和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。 TCP 可把太长的数据块划分短一些再传送。 TCP 也可等待积累有足够多的字节后再构成报文段发送出去。

TCP把连接作为最基本的抽象、TCP连接的端点是套接字:(IP地址:端口号)例如:(192.3.4.5:80)

停止等待"就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

停止等待协议的优点是简单,缺点是信道利用率太低。

流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一直有数据不间断地传送。 由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。

这里指的是已经发送了前5个分组,现在可以发送窗口里面的第6个分组

丢了一个后面的都要重传

接收方把收到的最后一个字节的编号加上 1 所得到的值宣布为确认号。

发送缓存用来暂时存放: 发送应用程序传送给发送方 TCP 准备发送的数据; TCP 已发送出但尚未收到确认的数据。

接收缓存用来暂时存放: 按序到达的、但尚未被接收应用程序读取的数据; 不按序到达的数据。

发送方TCP必须将报文段的PSH位置1,以通知接收方TCP,该报文段所包括的数据必须尽快交付给接收方应用程序,不要等待更多数据的到来。

复位 RST (ReSeT) ------ 当RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

同步 SYN ------ 同步 SYN = 1 表示这是一个连接请求或连接接受报文

终止 FIN (FINish) ------ 用来释放一个连接。FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种现象称为拥塞 (congestion)。 最坏结果:系统崩溃。

一个传输轮次所经历的时间其实就是往返时间 RTT。 "传输轮次"更加强调:把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。 例如,拥塞窗口 cwnd = 4,这时的往返时间 RTT 就是发送方连续发送 4 个报文段,并收到这 4 个报文段的确认,总共经历的时间。

慢开始门限 ssthresh 的用法如下: 当 cwnd < ssthresh 时,使用慢开始算法。 当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。

采用快重传 FR (Fast Retransmission) 算法可以让发送方尽早知道发生了个别报文段的丢失。 快重传算法首先要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。

TCP连接的建立:首先两端TCP都处于CLOSED(关闭)状态,开始时TCP服务器先创建传输控制模块TCB,然后进入LISTEN(收听)状态,TCP客户端进程也首先创建TCB传输控制模块,然后进行第一次握手(SYN=1,不能携带数据,消耗一个序号)客户端进程进入SYN-SENT(同步已发送)状态,服务器端端收到之后进行第二次握手(SYN=1,ACK=1,不能携带数据,消耗一个序号)服务器端进入SYN-RCVD(同步收到状态),客户端收到之后进行第三次握手(ACK=1,可以携带数据,如果不携带,不消耗一个序号),客户端进入ESTABLISHED(连接建立)状态,服务器端收到后也进入了(ESTABLISHED )状态。三次握手:防止已失效的连接请求报文段突然又传送到了服务器端。

TCP断开连接:开始时都处于ESTABLISHED(连接建立)状态,首先客户端进行第一次分手(FIN=1,可以携带数据,不携带,消耗一个序号)客户端进入FIN-WAIT-1(终止等待1)状态,服务器端收到后进行第二次分手(ACK=1,可以携带数据,不携带,不消耗一个序号)服务器端端进入CLOSE-WAIT(关闭等待)状态,客户端收到后,进入FIN -WAIT-2状态(终止等待2),然后服务器端进行第三次分手(FIN=1,可以携带数据,不携带,消耗一个序号),然后服务器端进入LAST-ACK(最后确认状态),然后客户端进行第四次分手(ACK=1,可以携带数据,如果不携带,不消耗序号)然后进入TIME-WAIT(时间等待)状态,等待2MSL(最长报文段寿命),客户端进入CLOSED状态,服务器端收到后进入CLOSED状态

为什么要设置TIME-WAIT状态必须等待2MSL?

①确保服务器端收到ACK

②防止已失效连接请求报文段出现在本连接中

相关推荐
njnu@liyong4 小时前
图解HTTP-HTTP报文
网络协议·计算机网络·http
GISer_Jing4 小时前
2025前端面试热门题目——计算机网络篇
前端·计算机网络·面试
ZachOn1y5 小时前
计算机网络:应用层 —— 应用层概述
计算机网络·http·https·应用层·dns
冰镇屎壳郎7 小时前
计算机网络 八股青春版
计算机网络
网络安全King9 小时前
计算机网络基础(2):网络安全/ 网络通信介质
计算机网络·安全·web安全
敲代码娶不了六花15 小时前
对计算机网络中“层”的理解
网络·网络协议·tcp/ip·计算机网络
njnu@liyong1 天前
图解HTTP-HTTP状态码
网络协议·计算机网络·http
斐夷所非1 天前
计算机网络基础图解
计算机网络
ZachOn1y2 天前
计算机网络:运输层 —— TCP 的选择确认(SACK)
网络·tcp/ip·计算机网络·可靠传输·sack·选择确认
kikyo哎哟喂2 天前
计算机网络基础--WebSocket
websocket·网络协议·计算机网络