传(运)输层概述




1.为什么TCP连接是三次握手而不是两次握手?
首先客户端和服务端各自都要确保自己的发送和接收能力都是正常的。
第一次握手,服务端可以确定自己的接收能力和客户端的发送能力是正常的。
第二次握手,客户端可以确定自己的发送接收能力以及服务端的发送接收能力是正常的。
第三次握手,服务端可以确认自己的发送能力和客户端的接收能力是正常的。
所以说只有两次握手是不合理。
还可以这样分析:
假设两次握手就能进行tcp连接,
那么当第一次握手后,服务端就会创建通信用的端口,
而如果第二次握手的时候数据包发生了丢失,
那么客户端由于没有收到服务端的应答数据包就会在等待一定时间后发起新的请求,这是服务端又会创建一个端口,如果这时又发生了上述的丢包情况就会浪费端口,浪费服务端资源。
而如果是三次握手,服务端应该是在第三次握手后才会创建端口。
2.TCP和UDP
- 应用层中的HTTP,SMTP协议基于TCP,而DNS和RTP协议基于UDP;
- TCP向上层提供有连接可靠服务,UDP向上层提供无连接不可靠服务;
- TCP仅支持单播,UDP支持单播,多播,广播;
- TCP是面向字节流的,而UDP是面向数据报文段的;







3.TCP流量控制
- 主机a和主机b
- a和b已建立tcp连接;
- a给b发送数据,b对a进行流量控制;
- 假设a发送的每个数据报文段可携带100字节的数据;
- a和b建立连接时b告诉a我的接收窗口为400;
- 因此a将自己的发送窗口也设置为400;
- 什么时候进行累计确认?
- 接收方确认几段,发送方滑动窗口向右移动几格;



零窗口探测报文也有其对应的重传计时器。


4.TCP拥塞控制
- 实际上发送方的发送窗口的大小是min(拥塞窗口大小,接收窗口大小)











5.超时重传时间的选择(太偏)
- 这是考研用的吧!


6.TCP可靠传输的实现(这个太大了)



