
作用
网络层把数据包发送到目的主机,但真正通信的是主机间的进程
传输层提供了进程间的逻辑通信,向高层屏蔽了底层的核心细节
UDP
User Datagram Protocol
特点
- 无连接
- 尽力而为
- UDP连接可以一对一、一对多、多对一、多对多
Header格式

TCP
Transmission Control Protocol
特点
- 面向连接
- 可靠的
- TCP连接是点对点的
Header格式

建立连接

客户端A,服务端B
三次握手
B处于监听状态,监听指定的端口
A向B发送连接请求报文
- SYN=1,ACK=0
B收到请求后,如果同意建立连接,则向A发送连接确认报文
- SYN=1,ACK=1
A收到B的确认报文后,再向B发送一个确认报文
- ACK=1
B收到A的确认后,建立连接
第三次握手的必要性
关闭连接

四次挥手
A向B发送连接释放报文
- FIN=1,ACK=0
B收到报文后向A发送确认报文
- ACK=1
当B不再需要连接时,向A发送连接释放报文
- FIN=1
A收到后向B发送确认报文,等待2MSL后释放连接
B收到A的确认报文后释放连接
第四次挥手的必要性
2MSL的必要性
TCP可靠传输
实现
超时重传
如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。
超时时间RTO
- 应该略大于RTT
TCP滑动窗口
发送方窗口
- 已经发送但未收到确认
- 可以发送但未发送的
接受方窗口
- 对最后一个按序到达的字节确认
TCP流量控制
作用
- 使得发送方的发送速率和接收方的接受速率有一个好的匹配
实现
- 通过控制确认报文中窗口字段的大小来控制发送方窗口大小,进而控制发送速率
TCP拥塞控制
网络拥塞引起超时,超时引起重发,重发加剧了拥塞,正反馈
作用
- 降低网络的拥塞程度
算法
慢开始+拥塞避免

- cwdn从1开始指数增长,超过慢开始门限 ssthresh时线性增长,超时后ssthresh=cwnd/2,重新慢开始
快重传+快恢复

- 三个同样的ACK说明丢包了,不等超时,直接重传,之后执行快恢复ssthresh=cwnd/2,cnwd设定为ssthresh,直接进入拥塞避免状态