网络编程知识点记录01

本文总结了网络编程中的关键概念,包括TCP的三次握手过程,解释了为何不是二次或四次握手,并探讨了第三次握手报文丢失的情况。此外,文章还提及了四次挥手和TIME_WAIT状态的重要性,以及IO复用的基本概念,旨在帮助读者深入理解网络连接的建立与断开机制。
摘要由CSDN通过智能技术生成

系列文章目录


网络编程学习总结01



前言

        随着网络编程的学习,发现很多知识点自己并没有掌握,所以需要不定期查漏补缺,温故而知新。提升自己的技能。


一、三次握手 

1.第二次握手返回的ACK值不是预期值时会怎么处理?什么情况下会出现预期值不是期望值?

   答:第二次握手返回的ACK值不是预期值时,握手发起方将发送RST报文给被动方,告知重新连接。

        这种情况是可能出现的,比如网络拥堵的情况下,发起方发送了多条一次握手报文,且这些报文的SYN值不同,旧的握手报文先达到被动方,被动方发起第二次握手,那么返回的ACK值将不是发起方的预期值。

1.为什么不是二次握手?

   答:如果是两次握手,那么会出现重复历史连接的初始化问题,会造成资源的浪费,无法可靠的同步双方的序列号。

        如果因为网络拥堵情况,客户端向服务端发送了多次握手报文:

        (1)假设服务器先收到旧握手报文,服务器认为连接建立,可以向客户端发送数据,客户端接收到数据后判断这不是自己的预期的连接,但服务器端已经完成了历史连接的初始化,这导致了资源的浪费。

        (2)假设服务器收到了正确的握手报文,服务器端认为连接建立,向客户端发送第二次握手报文后等待客户端发送数据,但是此处客户端被关闭,未收到第二次握手报文,服务器端一直在等待,资源被占用,也导致了资源的浪费。

       所以不能是两次握手。

2.为什么不是四次握手?

   答:如果是四次握手,就是将三次握手中的第二次握手拆分成ACK,SYN两次报文发送,这样做会造成资源的浪费,即使同时发送也不会影响可靠性,所以可以合并到一个报文中发送。

3.第三次握手报文丢失,会出现什么情况?

   答:若客户端发送的第三次握手报文没有被服务端接收到,服务端第二次报文发送超时时间已到则会重发第二次握手报文。一般报文会重发三次(这个次数可以通过变量设置),如果一直没有收到回复的第三次握手报文,服务器将会关闭这次的连接。

4.三次握手过程中客户端和服务端的状态变化?

   答:发送方是客户端,被动接收方是服务端。

        第一次报文发送前客户端是close状态,服务端是listen状态。

        第一次报文发送后,客户端是syn_send状态。

        第二次报文发送后,服务端是syn_rcvd状态。

        第二次报文接收后,客户端是established状态。

        第三次报文发送后,服务端接收到时,服务端也变为established状态。

        握手建立完成。

二、四次挥手

1.四次挥手过程

待补充。

2.为什么要有TIME_WAIT?

待补充。

3.TIME_WAIT值为什么是2MSL,而不是其他值?

待补充。

二、IO复用

1.IO复用的是什么?

待补充


总结

记录网络编程学习中的一些知识点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值