在看tcp/ip协议之前,我们先对计算机网络进行一个大致的复习
计算机网络概述
对应不同的计算机网络模型来说,计算机网络的模型都是不一样的,如下图有三种模型,我们学习的基本的其中的第三种模型:5层体系架构
这5层的功能如下
- 应用层:应用软件的网络协议,如:http
- 传输层:用特定的协议将数据传送到目标地址,如:tcp
- 网络层:用特定的协议将数据发送到目标地址上,如:ip
- 数据链路层:交换机
- 物理层:光纤
而 tcp/ip协议的说法有几个:
- 与互联网相关联的协议集合起来总称为 TCP/IP
- TCP 和 IP 这两种协议
- 在 IP 协议的通信过程中,使用到的协议族的统称。
而对应面试来说,tcp/ip中考察最多的就是tcp了。
tcp的三次握手和四次挥手
在csnd上面有两幅图片行生动
握手:
四次挥手:
因为tcp的可靠的传输协议,所以当女朋友发送了一条消息,男朋友就要相应一条回复。
所以握手的时候前面两部相当于确认和回复,在第三条消息代表是对男方的回复。通常第三次握手会携带则数据的信息一起发送。
挥手的时候,1、2 是女方告诉南方我的消息发送完成了,且男方接收到了消息,3、4代表的是男方同意了女方的关闭聊天请求,因为已经无话可说了
具体的tcp之间的交流图如下:
握手:
挥手:
参考:
csdn:TCP/IP 的三次握手和四次分手过程详解【图解】
面试题:
简述TCP的三次握手和四次挥手
参考上图
为什么是三次握手而不是两次握手?
避免产生多个连接。
如表示为上图的男女盆友,即如图所示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c9VJrahY-1675852442390)(C:/Users/煋/AppData/Roaming/Typora/typora-user-images/image-20230207193623454.png)]
参考:
为什么连接的时候是三次握手,关闭的时候却是四次握手?
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
男女盆友的关系就是:必须两方无话可说了,才可以关闭聊天窗口,否则会造成关系破裂
为什么需要经过2MSL(报文段在网络中最大生存时间)才能返回到CLOSE状态?
是为了给最后一次发送的ACK报文成功到达服务端预留时间,因为如果因为网络阻塞最后一次ACK未能及时到达服务端,服务端会以为客户端为收到上一次发送的FIN报文,则服务端会重新发送FIN报文,而这是客户端已经断开连接了,这时就是产生错乱的问题。
通俗来说就是: 男盆友给女友发了一句:我也无话可说了,但是在2MSL(一次是1MSL,一个来回就是2MSL)内它没有收到回复,但是女友在1MSL的时候就收到了消息,但是有用网络原因在1MSL内没有被达男友,,所以又发送了一句,而这一句又被女方收到了,所以女友再次响应。知道再过2MSL没收到消息为止
在tcp关闭的时候,没有任何的绝对可靠的关闭消息,只有尽可能的保证双方都知道关闭消息的事情,所以2MSL就是尽可能的保证
TCP与UDP的区别
tcp:可靠传输、传输效率低,每一个数据包都必须到达,如:下载的txt文件
UDP:不可靠传输、传输效率高,有效数据包可能会丢失,但是对应整体来说无影响,如:视频电话
推荐阅读
计算机网络:自定向下方法(原书第7版)第八版也发布了,但是视频教程是第七版的
B站:中科大-郑烇老师:一个将计算机网络讲的很好的老师