传输层
- 提供端到端的连接
端口号(Port)
- 端口号可以区分不同的网络协议
- 不同应用协议使用不同的端口号
常用端口号:
FTP 21、 20 | HTTP 80 |
---|---|
DNS 53 | Telnet 23 |
ssl 443 | SMTP 25 |
POP3 110 | TFTP 69 |
IMAP 143 | MySQL 3306 |
端口号的范围
- 2^16 =65536
端口号范围 | 端口类别 |
---|---|
0 ~ 1023 | 公认端口(知名端口) |
1024 ~49151 | 注册端口 |
49152 ~ 65535 | 私有端口与动态端口 |
- 公认端口/知名端口 (给一些重要的协议使用的端口 如http的80端口)
- 注册端口/登记端口 (应用注册使用的端口)
- 私有端口/动态端口 (主机/客户端使用的端口)
端口号细节
- 客户端常为随机端口号 、服务端则常为固定的知名端口号
- 端口号是可以根据需求修改的,当端口号不使用默认端口号,则无法连接到应用
- 只有服务端开了这个端口号的服务 ,你才能访问得到
传输层协议
协议 | 功能 | |
---|---|---|
TCP | Transmission control protocol 传输控制协议 | 可靠的、面向连接的协议 |
UDP | User datagram protocol 用户数据报协议 | 不可靠、无连接的服务 |
-
TCP 相当于打电话和电路交换差不多 效率低、稳定
-
UDP 相当于群聊 效率高 不稳定不在乎丢包
-
面向有连接
-
通信前需要建立关系来确认之间的状态
-
面向无连接
-
通信前不需要建立关系来确认之间的状态
TCP与UDP数据包结构对比
TCP会话过程
三次握手 会话建立
- ACK 确认位 SYN 同步位
-
第一次握手 SYN=1 seq=a ack=0
-
第二次握手 SYN=1 ACK=1 seq=b ack=a+1
-
第三次握手 ACK=1 seq=a+1 (相当于第二次握手的ack) ack=b+1
会话确认
- 传输时ack的大小 = seq+载荷+1
- 对每个数据包都会进行确认(影响资源的消耗,推出滑动窗口机制,只对部分进行确认)
TCP会话的拥塞和流量控制
- 每次服务器端接收包会通过确认包的win窗口来告诉客户端自己的缓冲区空余情况,来控制网络拥塞
TCP会话的终止 - 四次挥手
- 第一次挥手 seq=a ack=b ACK=1 FIN=1 确认结束
- 第二次挥手 seq=b ack=a+1 ACK=1 确认结束
- 第三次挥手 seq=b ack=a+1 FIN =1 开始结束
- 第四次挥手 seq=a+1(第三次挥手的ack) ack=b+1 ACK=1 成功解释
UDP传输过程
TCP UDP 区别
TCP | UDP |
---|---|
面向连接 | 无连接 |
可靠传输 | 不可靠传输 |
有重发和窗口机制 | 无重发及窗口控制机制 |
只支持点到点 | 支持任意通信方式 |
注重传输完整性 | 不注重 |