网络原理(TCP/IP五层协议)(二)
创始人
2024-05-21 04:00:19
0

目录

  • TCP 中的一些主要机制
    • 1.确认应答机制(安全机制)
    • 2.超时重传机制(安全机制)
    • 3.连接管理机制(安全机制)
      • 如何建立连接:三次握手
      • 如何断开连接:四次挥手

TCP 中的一些主要机制

TCP对数据传输提供的管控机制,主要体现在两个方面:安全和效率。
这些机制和多线程的设计原则类似:保证数据传输安全的前提下,尽可能的提高传输效率。

1.确认应答机制(安全机制)

确认应答机制是保证可靠传输的核心机制,关键就是,接收方收到消息之后,给发送方返回一个应答报文(ACK,acknowledge),表示自己已经收到了。
在这里插入图片描述
在网路上,数据接收的顺序不一定和发送的顺序完全一致,会存在后发现至的情况。
在这里插入图片描述
后发先至,对于网络来说,非常常见,网络环境非常复杂,连续发的两个包,不一定就是走同一条路。

为了解决这个问题,就需要对消息进行编号
在这里插入图片描述

在这里插入图片描述
TCP将每个字节的数据都进行了编号。即为序列号。
在这里插入图片描述
每一个ACK都带有对应的确认序列号,意思是告诉发送者,我已经收到了哪些数据;下一次你从哪里开
始发。

2.超时重传机制(安全机制)

超时重传相当于对确认应答进行了补充~确认应答是网络一切正常的时候,通过ACK通知发送方我收到了,但是如果出现了丢包的情况,发送方就收不到这个 ACK 了。而对于发送方来说,是无法区分由于哪种原因导致没有收到 ACK,稳妥起见,发送方在等待一段时间之后就会进行超时重传,将数据再发一次。
在这里插入图片描述
对于发送方来说,无法区分是哪种原因导致的没有收到ACK~
往坏的方向想,认为对方压根没收到,重新再发一次,这里的重复也不是立即就重发的,得等一会,如果等了10分钟,还没有收到这个ACK,就重发一次!

在这里插入图片描述
但是有一个问题,如果接收方已经收到了这个数据,只是在返回 ACK 的时候这个应答消息丢包了,此时发送方再发送一次数据,这样是不合理也是不安全的,例如:转账操作。

TCP内部的去重机制
接收方收到的数据会先放到操作系统内核的"接收缓冲区"
接收缓冲区可以视为是一个内存空间,并且也可以视为是一个阻塞队列~
收到新的数据,TCP就会根据序号,来检查看这个数据是不是在接收缓冲区中已经存在了。
如果不存在,就放进去,如果存在,就直接丢弃。当顺利收到 ACK 之后,就可以把这个数据从缓冲区拿出进行下一步的封装传送了~

注意:
在这里插入图片描述
在这里插入图片描述

基于上述确认应答和超时重传两个机制,TCP的可靠性,得到了有效的保障。

3.连接管理机制(安全机制)

TCP 进行可靠传输最重要的保障机制,也是是网络部分最高频出现的讨论问题,也就是著名的:三次握手,四次挥手。

如何建立连接:三次握手

三次握手是客户端和服务器之间,通过三次交互,完成了建立连接的过程。
"握手"是一个形象的比喻。
在这里插入图片描述
在这里插入图片描述
客户端是主动发起连接请求的一方,客户端发送一个SYN同步报文段,给服务器~~
在TCP报文头中,有以下六个标志位:
在这里插入图片描述
如果SYN这一位为1表示当前报文就是一个"同步报文段"主机A和主机B之间要建立连接~~

在这里插入图片描述
三次握手有什么用?和可靠性有什么关系?

  • TCP 的 三次握手 和 四次挥手 都是为了保证数据传输的可靠性。
  • 三次握手相当于投石问路,检查当前这个网络的情况是否满足可靠传输的基本条件。 也就是检测通讯双方的 发送能力 和 接受能力 是否正常。
  • 通过以上的 “三次握手” 过程,客户端和服务器之间已经确定建立好了连接,接下来就可以进行真正的数据传输了。
  • 三次握手的应用
    在这里插入图片描述
    在这里插入图片描述
    经典的面试题:
    1.描述TCP三次握手的过程
    上述内容的图!
    2.为啥握手是三次?两次?四次?
    两次:服务器验证不了自己的发送能力和对方的接受能力,此刻,服务器对于当下能否满足可靠传输心里是没底的,所以需要第三次握手接收以下客户端的 ACK,才能保证通讯是可以进行的。
    四次:可以,但没必要。中间一次服务器发送的 SYN 和 ACK 可以合为一次发送。
    3.当浏览器里面输入了 URL 之后,程序是怎么执行的:
    在这里插入图片描述

    如何断开连接:四次挥手

    三次握手,就让客户端和服务器之间建立好了连接~
    其实建立好连接之后,操作系统内核中,就需要使用一定的数据结构保存连接相关的信息。
    保存的信息其实最重要的就是前面说的"五元组",而且客户端服务器都得保存五元组。
    源IP,源端口,目的IP,目的端口,TCP
    那么在通信完成时,就需要断开连接,也就是释放掉关于对方的一些不必要的资源。所以就需要:四次挥手。
    在这里插入图片描述
    在四次挥手过程中,先由请求断开连接一方首先发送 FIN(结束报文段) 请求,接收方收到这个断开连接请求时会先有操作系统内核回复一个 ACK,表示已确认收到请求信息;
    接下来服务器也同样会发送一个 FIN 表示同意断开连接并且付出行动(触发代码来close),客户端收到后再次返回一个 ACK 这样就可以有效的断开双方的 TCP 连接了。

    四次挥手和三次握手的区别
    三次握手,一定是客户端主动发起的(主动发起的一方才叫客户端)
    四次挥手,可能是客户端发起的,也可能是服务器发起的
    三次握手,中间两次能合并
    四次挥手,中间两次有时不能合并

    四次挥手过程中,FIN 和 ACK 可以合并发送吗?

    有时可以合并,有时不可以。主要原因在于,很多时候中间两次的 FIN 和 ACK 发送的时机可能是不同的。
    因为:双方通讯时所发送的 ACK 和 SYN 都是操作系统内核负责的;而所发送的 FIN 是用户代码负责的(代码中执行到了 socket.close(),才会触发 FIN)
    在这里插入图片描述
    两个重要状态
    在这里插入图片描述
    在这里插入图片描述
    TCP虽然可靠性是最高的机制,但是TCP也会尽可能的提高传输效率
    今天我们先说的这里,之后的内容等待下篇文章~

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...