`
bilibili
  • 浏览: 5978 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类

与TCP的第一次握手

阅读更多

通信的学习是从写服务器开始的,之后加上客户端,然后实现两个之间的消息发送,这其实是基于TCP/IP的协议的通信,跟之前看到的UDP协议不同,是一种面向连接,需要通信双方建立连接并确认后才能实现数据的传输。这样的话,TCP的数据传输比UDP更安全可靠。

面向连接的传输是以两个主机间的握手开始的,一个主机发送到另一个主机间的握手有三个作用:

1.确保目的主机可用;

2.确保目的主机正在侦听目标端口号;

3.通知给目的主机发出者的序号,使双方在传输数据时可以进行跟踪。

TCP/IP是在通信双方建立连接后,把要传输的数据转换为字节流,但是字节流不能分辨出消息部分和非消息部分,所以接收方在接收到字节流后,需要按照TCP/IP协议把字节流再翻译成为消息。

在客户端和服务器之间的数据传输前,需要“三次握手”来实现。

1.建立连接时,客户机A向服务器B发送SYN包(SYN=j),并进入到SYN_SEND(请求连接)状态,等待服务器B确认;

2.服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态;

3.客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),客户端A和服务器B进入ESTABLISHED(连接成功)状态,三次握手完成。

三次握手即三步:请求—确认—再确认的过程,握手完成后客户端和服务器开始传输数据。

结束通信时,需要进行“四次断开”。

1.客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。

2.服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。

3.服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。

4.客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。

断开的四个步骤其实就是通信双方互相给对方发送“断开”的请求,然后互相确认的过程,但是由于是全双工,所以在断开时需要四步,若只有一方断开,则通信并不能完全结束,另一方仍能发送消息。

根据TCP/IP的三次握手,四次断开的过程分析,可以更好的理解了面向连接协议的特点,需要通信双方的互相确认,并且能根据序号对数据进行跟踪,所以很好地保护了数据的安全传输。

分享到:
评论

相关推荐

    TCP三次握手PPT课件.ppt

    1. **第一次握手**:客户端(Client)向服务器(Server)发送一个SYN(同步序列编号)报文段,其中包含自己的初始序列号SEQ=X。这是连接请求报文,表明Client希望与Server建立连接。 2. **第二次握手**:Server收到...

    wireshark抓包分析tcp三次握手四次挥手

    1. **第一次握手**:客户端(Client)发送一个SYN(同步序列编号)报文段给服务器(Server),请求建立连接。这个报文段中包含客户的初始序列号ISN(Initial Sequence Number)。 2. **第二次握手**:服务器收到...

    TCP协议三次握手过程分析

    1. **第一次握手**:客户端(主机A)向服务器(主机B)发送一个SYN(Synchronize)标志位置为1的TCP报文段,同时设置一个初始序列号(Sequence Number,seq=x)。这一步的目的在于告知服务器端,客户端希望建立连接...

    tcp协议三次握手过程

    第一次握手是客户端向服务器发送 SYN 包,请求建立连接。客户端发送的数据包中,SYN 标志位被设置为 1,随机产生一个 Seq number(顺序号码),用于标识该连接。服务器收到该包后,知道客户端想要建立连接。 例如,...

    TCP三次握手.docx

    这三个阶段分别是:第一次握手、第二次握手和第三次握手。在这三个阶段中,客户端和服务器之间会进行数据交换,确保连接的建立和数据的可靠传输。 第一次握手 在第一次握手中,客户端主动向服务器发送 SYN 报文,...

    Wireshark入门 tcp三次握手

    1. **第一次握手**:客户端向服务器发起连接请求。 2. **第二次握手**:服务器确认接收到客户端的请求,并准备接受连接。 3. **第三次握手**:客户端再次确认,完成连接建立。 #### 三、Wireshark简介 Wireshark是...

    Wireshark抓包分析TCP“三次握手,四次挥手”.doc

    这里涉及到 LInux 的 TCP 时延机制,当被挥手端(这里是 12672 端口)第一次收到挥手端(这里是 443 端口)的“FIN”请求时,并不会立即发送 ACK,而是会经过一段延迟时间后再发送,但是此时被挥手端也没有数据发送...

    tcp三次握手与四次握手及SOCKE函数对应

    1. 第一次握手:客户端发送一个带有SYN(同步序列号)标志的数据段,请求建立连接。这个数据段中包含了客户端选择的一个随机初始序列号。 2. 第二次握手:服务器接收到SYN后,会回应一个SYN+ACK(同步+确认)的数据...

    TCP协议三次握手示意图

    1. 第一次握手(SYN):客户端想要与服务器建立连接,它会生成一个随机的序列号seq(Sequence Number),并将此序列号和SYN(Synchronize Sequence Numbers)标志位设置在TCP报文中发送给服务器。此时,客户端进入...

    TCP三次握手与四次挥手.pdf

    1. 第一次握手:客户端发送一个带有SYN(同步序列编号)标志的数据包给服务器端,进入SYN_SEND状态,表示客户端希望与服务器建立连接。这个包中同时也会包含客户端的初始序列号(ISNc)。 2. 第二次握手:服务器端...

    案例测试TCP的三次握手和四次挥手过程

    1. 第一次握手:客户端向服务器发送一个SYN(同步序列号)包,其中包含了客户端随机选择的初始序列号ISN。此时,客户端进入SYN_SENT状态。 2. 第二次握手:服务器收到SYN包后,回应一个SYN+ACK包,确认客户端的...

    模拟TCP三次握手

    1. **第一次握手**:客户端向服务器发送一个SYN(同步序列编号)数据包。该数据包中的SYN标志位被设置为1,并且选择一个初始序列号Seq=x。 2. **第二次握手**:服务器收到客户端的SYN包后,会返回一个SYN+ACK...

    验证tcp的三次握手

    1. 第一次握手:服务器收到连接释放报文段后即发出确认,确认号是 ack1=seq1+1=468,而这个报文段自己的序号 seq2=30,等于服务器前面已传过的数据的最后一个字节的序号加 1。 2. 第二次握手:客户进程收到来自...

    TCP三次握手,四次断开

    #### 第一次握手:客户端发送同步序列号(SYN) - **动作描述**:在TCP连接建立过程中,客户端首先发起连接请求,它通过向服务器发送一个带有`SYN`标志位的数据包来实现。这个数据包包含了客户端初始化的序列号,用...

    wireshark抓包分析tcp三次握手四次挥手详解及网络命令

    1. **第一次握手**:客户端向服务器发送一个SYN报文段,其中包含了一个初始序列号,表示客户端想要建立连接。 2. **第二次握手**:服务器收到客户端的SYN报文段后,会回应一个SYN+ACK报文段,确认收到客户端的请求,...

    tcp三次握手

    第一次握手 - **发送方**:主机A发送一个带有SYN(Synchronize)标志的数据包到主机B,同时随机产生一个序列号(Sequence Number),比如1234567。 - **目的**:表明主机A想要建立连接。 ##### 2. 第二次握手 - **...

    tcp三次握手协议

    第三次握手:客户端收到服务器的SYN+ACK响应后,再发送一个仅带有ACK标志的数据包,确认编号为服务器的序列编号加一。至此,TCP连接建立完成,双方可以开始传输数据。 TCP连接的状态管理中,FLAGS字段包含多个标志...

    TCP三次握手和四次挥手面试题详解.pdf

    1. 第一次握手:客户端发送一个带有SYN(同步序列编号)标志的数据包给服务器,请求建立连接。此时客户端处于SYN_SEND状态。 2. 第二次握手:服务器接收到带有SYN标志的数据包后,会回复一个带有SYN和ACK(确认应答...

    网络第一次握手

    ### 第一次握手:客户端发送连接请求 在三次握手中的第一步,客户端(如用户的计算机或移动设备)首先向服务器发送一个SYN(同步序列编号)数据包。这个数据包包含了客户端希望使用的初始序列号,并告知服务器...

Global site tag (gtag.js) - Google Analytics