zoukankan      html  css  js  c++  java
  • tcp机制简述(三次握手、四次挥手、滑动窗口)

    1、tcp协议用于传输层,通常linux内核将协议层实现,用户只需要在内核提供的接口上进行编程即可,之间讲述了socket网络编程的接口函数,接下来主要来描述tcp协议里面的几个重要机制

    2、三次握手

      在了解三次握手前,需要了解tcp协议的数据结构。

      

      首先我们需要记住几个标识位,一个是SYN、一个是ACK、一个是FIN

      建立连接的过程中需要进行三次握手,这时,客户端发起连接请求,随机生成一个32位的确认序列号,也就是随机生成一个SYN+data_len,发给服务器端,这时候,服务器收到请求后,确认标识位为1,这时候,它会主动发送一个SYN+ACK的请求报文,ACK位32位的确认序号,是SYN+data_len+1,同时服务器端也会随机产生一个SYN,客户端收到后,它会返回一个ACK,为服务器的SYN+1,服务器确认后,连接建立。

    2、四次挥手

      四次挥手很简单,主要用到FIN和ACK,客户端和服务器的任何一方都可以主动请求断开链接,这时候,比如客户端会发送一个断开链接请求,这时候它会发送一个FIN+ACK,其中ACK为上次发送的确认ACK,这时候,服务器收到会回一个ACK,然后服务器也会发送一个FIN+ACK,再次确认是否断开链接,客户端再次回一个ACK,收到后链接断开,四次挥手完成。

    3、滑动窗口

      滑动窗口,其实很简单,就是每次tcp传输过程中,server和client会携带一个滑动窗口大小,意味着此时它能一次接受多少数据,因为数据在客户端和服务器之间是有缓存的,滑动窗口也就相当于对方告诉自己目前缓冲区的大小,不需要每次发一个数据包就回一个ACK,通过滑动窗口来进行简单的拥塞控制。

  • 相关阅读:
    [JSOI2007][BZOJ1030] 文本生成器|AC自动机|动态规划
    [NOI2014][BZOJ3670] 动物园|KMP
    [HAOI2010][BZOJ2427] 软件安装|tarjan|树型dp
    [JSOI2008][BZOJ1017] 魔兽地图DotR|树型dp
    [JLOI2014][BZOJ3631] 松鼠的新家|树上倍增LCA|差分
    [SDOI2010][BZOJ1975] 魔法猪学院|A*|K短路
    [BZOJ1251] 序列终结者|Splay
    hdu 2141 Can you find it?
    hdu 3152 Obstacle Course
    hdu 2680 Choose the best route
  • 原文地址:https://www.cnblogs.com/zz1314/p/12953586.html
Copyright © 2011-2022 走看看