说说TCP的三次握手

TCP(Transmission Control Protocol) 传输控制协议的主要特点

1.TCP是面向连接的传输层协议。

2.每个TCP连接只能有两个端点,点对点的。

3.TCP提供可靠性

4.TCP连接是全双工的。(TCP允许通信双方在任何时候都能发送数据,TCP连接两端都设有发送缓存和接收缓存,发送端在发送数据后,就做自己的事情了,数据会保存在缓存区,TCP会在合适的时候发送数据,接收同理)。

5.面向字节流的传输协议。

首先,我们先通过wireshark来抓取tcp的包

这个是向server端发送tcp连接请求

上图中有几个字段需要重点介绍下:
        (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
        (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
        (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下

              URG:紧急指针标志

              ACK:确认序号标志

              PSH:push标志

扫描二维码关注公众号,回复: 5841673 查看本文章

              RST:重置连接标志

              SYN:同步标志,用于建立连接过程

              FIN:finish标识,用来释放连接

然后我们再点击打开查看内容

        TCP的三次“握手”过程如下: 

        (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
        (2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
        (3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

TCP的可靠性实现
     基于请求应答机制的 - 每次发送完一个数据分组后,等待请对方确认,收到确认信号后再发送下一个分组,分组会进行编号。
TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。保证序列按序到达。
当TCP发送一组数据后,会启动一个超时定时器,如果一定时间内没有接到目的端的接受确认信号,则进行重发。超时重发。
丢包重传。
通过滑动窗口进行流量控制,防止发送数据过快,要让接收方来的及接收。
接收方滑动窗口已满,发送方等待一段时间,系统过一段时间(设置定时器)会询问接收方的缓冲区
网络拥塞控制(慢开始,拥塞避免,快重传,快恢复)。


 

猜你喜欢

转载自blog.csdn.net/qq_42448476/article/details/89196764