zoukankan      html  css  js  c++  java
  • TCP/IP协议和三次握手四次挥手

    TCP/IP 是一个四层体系结构,它包含:应用层,运输层,网际层和网络接口层。

    应用层:通过应用进程间的交互来完成特定网络进程的应用。应用层协议定义的是应用进程间的通信和交互规则。

    运输层:负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。

    网络层:选择合适的网间路由和交换节点,确保计算机通信的数据及时传送。

    数据链路层:两台主机之间传输数据,总是在一段一段的链路上传送,需要使用专门的链路层协议。

    物理层:实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。

    什么是TCP?

    TCP其实一种面向连接的、可靠的、基于字节流的传输层通信协议,在发送数据前双方必须建立一种连接。所谓连接就是服务端和客户端保存的关于对方的一份信息,包含IP地址或者端口号等。

    一个TCP连接由一个4元组构成,分别是两个IP地址和两个端口号。一个TCP连接通常分为三个阶段:连接、数据传输、退出(关闭)。通过三次握手建立一个链接,通过四次挥手来关闭一个连接

    三次握手:三次握手的本质是确认通信双方收发数据的能力。

    第一次握手:客户端要向服务端发起连接请求,首先客户端随机生成一个起始序列号ISN(比如是100),那客户端向服务端发送的报文段包含SYN标志位(也就是SYN=1),序列号seq=100。

    第二次握手服务端收到客户端发过来的报文后,发现SYN=1,知道这是一个连接请求,于是将客户端的起始序列号100存起来,并且随机生成一个服务端的起始序列号(比如是300)。然后给客户端回复一段报文,回复报文包含SYN和ACK标志(也就是SYN=1,ACK=1)、序列号seq=300、确认号ack=101(客户端发过来的序列号+1)。

    第三次握手:客户端收到服务端的回复后发现ACK=1并且ack=101,于是知道服务端已经收到了序列号为100的那段报文;同时发现SYN=1,知道了服务端同意了这次连接,于是就将服务端的序列号300给存下来。然后客户端再回复一段报文给服务端,报文包含ACK标志位(ACK=1)、ack=301(服务端序列号+1)、seq=101(第一次握手时发送报文是占据一个序列号的,所以这次seq就从101开始,需要注意的是不携带数据的ACK报文是不占据序列号的,所以后面第一次正式发送数据时seq还是101)。当服务端收到报文后发现ACK=1并且ack=301,就知道客户端收到序列号为300的报文了,就这样客户端和服务端通过TCP建立了连接。

    简而言之,三次握手:

    1.客户端向服务器发送一个建立连接的请求

    2.服务器接到请求后发送同意连接的信号

    3.客户端接到同意连接的信号后,再次向服务器发送了确认信号,然后客户端与服务器的连接建立成功

    四次挥手:目的是关闭一个链接

    第一次挥手:当客户端的数据都传输完成后,客户端向服务端发出连接释放报文。

    第二次挥手:服务端收到客户端发的FIN报文后给客户端回复确认报文。

    第三次挥手:服务端将最后数据(比如50个字节)发送完毕后就向客户端发出连接释放报文。

    第四次挥手:客户端收到服务端发的FIN报文后,向服务端发出确认报文。而服务端一旦收到客户端发出的确认报文就会立马释放TCP连接,所以服务端结束TCP连接的时间要比客户端早一些。

    参考:https://blog.csdn.net/ThinkWon/article/details/104903925

  • 相关阅读:
    linux查看CPU和内存信息
    linux yum命令详解
    查看文件中关键字前后几行的内容
    vue.js+web storm安装及第一个vue.js
    android GPS: code should explicitly check to see if permission is available
    ASP.NET MVC Identity 使用自己的SQL Server数据库
    阿里云服务器,tomcat启动,一直卡在At least one JAR was scanned for TLDs yet contained no TLDs就不动了
    ASP.NET MVC4 MVC 当前上下文中不存在名称“Scripts”
    python 将windows字体中的汉字生成图片的方法
    Java android DES+Base64加密解密
  • 原文地址:https://www.cnblogs.com/liumcb/p/13633809.html
Copyright © 2011-2022 走看看