传输层知识点
传输层提供的服务
传输层的功能
它属于面向通信部分的最高层,用户功能中的最低层
网络层协议不可靠,传输层能为应用程序提供可靠的服务
传输层的功能:
- 传输层提供进程之间的逻辑通信(端到端的通信),网络层提供的是主机之间的通信
- 复用和分用
- 传输层还要对收到的报文进行差错检测(首部和数据部分),网络层只检查IP数据报的首部
- 提供两种不同的传输层协议,面向连接的TCP协议和无连接的UDP协议
传输层的寻址与端口
端口的作用
端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程
端口号
服务器端使用的端口号:
- 熟知端口号:数值0~1023
- 登记端口号:数值1024~49151
常用的熟知端口号:
| 应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
|---|---|---|---|---|---|---|---|
| 熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
客户端使用的端口号:
数值为49152~65535
短暂端口号(临时端口)
套接字
套接字Socket = (IP地址:端口号)
唯一的标识网络中的一台主机和其上的一个应用(进程)
无连接服务和面向连接服务
面向连接的传输控制协议(TCP),提供全双工可靠的逻辑信道
文件传输协议(FTP)、超文本传输协议(HTTP)、远程登录(TELNET)
无连接的用户数据报协议(UDP),提供不可靠的逻辑信道
小文件传输协议(TFTP)、DNS、SNMP和实时传输协议(RTP)
UDP协议
UDP数据报
UDP仅在IP数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测
UDP的优点:
- UDP无需建立连接
- 无连接状态
- 分组首部开销小:TCP有20B的首部开销,UDP仅有8B的开销
- 应用层能更好地控制要发送的数据和发送时间
- UDP支持一对一、一对多、多对一和多对多的交互通信
UDP是面向报文的
UDP的首部格式
UDP首部有8B
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xXPaTvZ3-1658474775368)(C:\Users\wyy0828\AppData\Roaming\Typora\typora-user-images\image-20220722102826202.png)]](https://img-blog.csdnimg.cn/d8606bb5ffd84df78e846dced1c85a2c.png)
- 源端口
- 目的端口
- 长度:最小值是8B(仅有首部)
- 校验和:可选的,当源主机不想计算校验和时,直接令该字段为全0
接收方UDP发现收到的报文中的目的端口号不正确,就丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方
UDP校验
计算校验和时,要在UDP数据报之前增加12B的伪首部
伪首部既不向下传送又不向上递交,只是为了计算校验和
IP数据报的校验和只检验IP数据报的首部,但UDP校验检查首部和数据部分
TCP协议
TCP协议的特点
特点:
- TCP是面向对象的传输层协议,TCP连接是一条逻辑连接
- TCP连接只能是端到端的
- TCP提供可靠交付的服务,保证传送的数据无差错、不丢失、不重复且有序
- TCP提供全双工通信
- TCP是面向字节流的
TCP报文段
首部前20B固定
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aw1bDMjn-1658474775370)(C:\Users\wyy0828\AppData\Roaming\Typora\typora-user-images\image-20220722104313423.png)]](https://img-blog.csdnimg.cn/209cab1e96554acf96ff0fcf1e108f46.png)
- 源端口和目的端口:各占2B
- 序号:占4B
- 确认号:占4B,期望收到对方下一个报文段的第一个数据字节的序号
- 数据偏移(首部长度):占4B,4位二进制数仅能表示的最大值位为15,TCP首部最大长度为60B
- 保留:占6B
- 紧急位URG:当URG=1时,表明紧急指针字段有效
- 确认位ACK:ACK=1时,确认号有效,ACK=0时,确认号无效,在建立连接后所有传送的报文段都必须把ACK置为1
- 推动位PSH:接收方TCP收到PSH=1的报文段,就尽快的交付给应用进程,不用再等到缓存填满后交付
- 复位位RST:RST=1,表明TCP连接中出现严重差错,必须释放连接
- 同步位SYN:SYN=1时表示这是一个连接请求或连接接受报文
- 终止位FIN:用来释放连接
- 窗口:占2B,接收方让发送方设置其发送窗口的依据
- 校验和:占2B
- 紧急指针:占2B
- 选项:长度可变,TCP规定了一种选项,最大报文段长度(MSS)(数据部分)
- 填充:为了使整个首部长度是4B的整数倍
TCP连接管理
TCP连接三个阶段:
- 连接建立
- 数据传送
- 连接释放
TCP连接的端口即为套接字或插口,每条TCP连接唯一地被通信地两个端点确定
TCP连接的建立采用客户/服务器模式
TCP连接的建立
三次握手
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tWFhqsMv-1658474775371)(C:\Users\wyy0828\AppData\Roaming\Typora\typora-user-images\image-20220722110740325.png)]](https://img-blog.csdnimg.cn/2fb3c9d923b8490b807092e5bb93b658.png)
服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击
TCP连接的释放
四次挥手
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eCL3wAg3-1658474775371)(C:\Users\wyy0828\AppData\Roaming\Typora\typora-user-images\image-20220722111044501.png)]](https://img-blog.csdnimg.cn/7eff287e885f4b66a803b04df472ac2e.png)
建立连接:
- SYN=1,seq=x
- SYN=1,ACK=1,seq=y,ack=x+1
- ACK=1,seq=x+1,ack=y+1
释放连接:
- FIN=1,seq=u
- ACK=1,seq=v,ack=u+1
- FIN=1,ACK=1,seq=w,ack=u+1
- ACK=1,seq=u=1,ack=w+1
TCP可靠传输
序号
指的是本报文段所发送的数据的第一个字节的序号
确认
期望收到对方的下一个报文段的数据的第一个字节的序号
重传
导致TCP对报文段进行重传:
- 超时
- 冗余ACK:TCP规定当发送方收到对同一个报文段的3个冗余ACK时,就可以认为跟在这个被确认报文段之后的报文段已丢失
TCP流量控制
接收窗口rwnd
拥塞窗口cwnd
传输层和数据链路层的流量控制的区别:
- 传输层定义端到端用户之间的流量控制,数据链路层定义两个中间的相邻结点的流量控制
- 数据链路层的滑动窗口协议的窗口大小不能动态变化,传输层的则可以动态变化
TCP拥塞控制
拥塞控制与流量控制的区别:
| 流量控制 | 拥塞控制 |
|---|---|
| 指在发送端和接收端之间的点对点通信的控制,所要做的就是抑制发送端发送数据的速率,以便接收方来得及接收 | 确保通信子网能够传送待传的数据,是一个全局性问题,设计网络中所有的主机,路由器以及导致网络传输能力下降的因素 |
拥塞控制的4种算法
- 慢开始
- 拥塞避免
- 快重传
- 快恢复
发送窗口的上限值 = min[rwnd,cwnd]
- 当cwnd < ssthresh时,使用慢开始算法;
- 当cwnd > ssthresh时,停止使用慢开始算法而改用拥塞避免算法;
- 当cwnd = ssthresh时,既可以使用慢开始算法,也可以使用拥塞避免算法;
Tips
同一台计算机中TCP和UDP分别拥有自己的端口号,它们互不干扰
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
