TCP与UDP
为什么有两个协议?
和两个协议的特点有关系。
- TCP是面向连接的。
- TCP提供可靠的服务
- UDP面向无连接的
- TCP对系统资源要求多些,UDP对系统资源要求少些。
- UDP用在实时性较高网络较好的通信和广播领域
TCP协议主要机制?
- 校验和
TCP首部 TCP数据 TCP伪首部3部分。反码求和。发送端和接收端。 - 重传机制
TCP的应答机制,会有效率问题。而滑动窗口能解决问题。丢包的话,快速重传。 - 序号标识
通过序号来保证传输过程之中包的重组,保证包的完整性。利用序列号可以跟踪发送的数据量,接收端利用确认号来确认接受的数据。 - 滑动窗口
无需等待ACK,可以继续发送。提供效率 - 确认应答
ACK确认号
为什么TCP三次握手和四次挥手?
三次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。把三次握手改成仅需要两次握手,死锁是可能发生的。
time_wait状态产生的原因、危害以及如何避免?
防止主动发起close端的机器,第3次ACK服务器能收的到。
高并发的时候, 短连接会产生大量time_wait, 导致ip port资源不释放,从而连接不上。
设置SO_REUSEADDR套接字选项来通知内核,如果端口忙,但TCP连接位于TIME_WAIT状态时可以重用端口