TCP/IP 与 OSI参考模型
TCP与OSI参考模型.jpgOSI参考模型通信处理
分层通信.jpgTCP与UDP的区分
TCP | UDP | |
---|---|---|
可靠性 | 可靠 | 不可靠 |
连接性 | 面向连接 | 无连接 |
报文 | 面向字节流 | 面向报文 |
效率 | 传输效率低 | 传输效率高 |
双工性 | 全双工 | 一对一、一对多、多对一、多对多 |
流量控制 | 滑动窗口 | 无 |
拥塞控制 | 慢开始、拥塞避免、快重传、快恢复 | 无 |
传输速度 | 慢 | 快 |
应用场景 | 对效率要求低、对准确性要求高 | 对效率要求高、对准确性要求低 |
- TCP用于在传输层有必要实现可靠传输的情况。由于它是面向有连接并具备顺序控制、重发控制等机制的,所以它可以为应用提供可靠传输。
- UDP主要用于那些高速传输和实时性有较高要求的通信或广播通信。
TCP连接的建立与终止
TCP三次握手
TCP三次握手.jpg- 第一次握手:请求建立连接。客户端发送连接请求报文段,客户端进入SYN_SENT状态,等待服务器的确认;
- 第二次握手:服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为J+1(Sequence Number+1);同时,自己还要发送SYN请求信息,将SYN位置为K,服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
- 第三次握手:客户端收到服务器的SYN+ACK报文段,然后将Acknowledgment Number设置为K+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
TCP四次挥手
TCP四次挥手.jpg- 第一次分手:客户端向服务端发送一个FIN报文段;此时,客户端进入FIN_WAIT_1状态;这表示客户端没有数据要发送给服务端了;
- 第二次分手:服务端收到了客户端发送的FIN报文段,服务端回一个ACK报文段,Acknowledgment Number为Sequence Number加1;客户端进入FIN_WAIT_2状态;服务端告诉客户端,我“同意”你的关闭请求;
- 第三次分手:服务端向客户端发送FIN报文段,请求关闭连接,同时服务端进入LAST_ACK状态;
- 第四次分手:客户端收到服务端发送的FIN报文段,向服务端发送ACK报文段,然后客户端进入TIME_WAIT状态;服务端收到客户端的ACK报文段以后,就关闭连接;此时,客户端等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,客户端也可以关闭连接了。
网友评论