TCP通信

本文详细介绍了TCP/IP协议体系结构与OSI模型的基本概念,对比了TCP和UDP的区别,并深入探讨了TCP的握手协议及粘包问题的解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       一、OSI模型和TCP/IP协议体系结构

              1、网络体系结构研究的是什么

                    网络体系结构即指网络的层次结构和每层所使用的的协议的集合。

               2、网络体系结构

                     

                3、TCP和UDP

                       共同点:都属于传输层协议

                       不同点:TCP 有连接,可靠

                                      UDP 无连接,不保证可靠

       二、TCP通信

                 1、TCP服务器/客户端通信 

                      

                     服务器端代码:

                            

                      客户端代码:

                            

                  2、TCP握手协议(三次握手和四次挥手)

                        三次握手:

                                           1、第一次握手:Client将标志位SYN置为1,随机产生一个值seq=j并                       将该数据包发送给Server,Client进入SYN_SENT状态,等待server确认。

                                           2、第二次握手:Server收到数据包后由标志位Client请求建立连接,                       Server将标志位SYN和ACK都置为1,ack=j+1,随机产生一个值seq=k,并将该数据包发                     送给Client以确认连接请求,Server进入SYN_RCVD状态。

                                            3、第三次握手:Client收到确认后,检查ack是否为j+1,ACK是否为                      1,如果正确则将标志位ACK置为1,ack=k+1,并将该数据包发送给Server,Server查                        ack是否为k+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入                                  ESTABLISHED状态,完成三次握手,随后Client和Server之间可以开始传输数据了。

                             

                        四次挥手: 

                                            1、第一次挥手:A数据传输完毕需要断开连接,A的应用进程向TCP                        发出连接释放报文段(FIN = 1,序号seq = u),并停止再发送数据,主动关闭TCP连                          接,进入FIN-WAIT-1状态,等待B的确认。

                                             2、第二次挥手:B收到连接释放报文段后即发出确认报( ACK=1,                        确认号ack=u+1,序号seq=v),B进入CLOSE-WAIT关闭等待状态,此时的TCP处于半关                      闭状态,A到B的连接释放。而A收到B的确认后,进入FIN-WAIT-2状态,等待B发出                        的连接释放报文段。

                                             3、第三次挥手:当B数据传输完毕后,B发出连接释放报文段(FIN=                      1,ACK = 1,序号seq = w,确认号ack=u+1),B进入LAST-ACK(最后确认)状态,                        等待A 的最后确认。

                                             4、第四次挥手:A收到B的连接释放报文段后,对此发出确认报文段                    (ACK = 1,seq=u+1,ack=w+1),A进入TIME-WAIT(时间等待)状态。此时TCP未                      释放掉,需要经过时间等待计时器设置的时间2MSL后,A才进入CLOSE状态。
                             

                  3、TCP粘包问题

                        1、出现问题的原因:信道拥挤、读写速率不匹配

                        2、解决方案:适用于延时(用时间来匹配速率)    

                                               写多少读多少(适用同等大小缓存,让读写保持一致)

                                               对粘合的包进行解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值