• 三次握手+四次挥手


    建立连接的三次握手:

    SYN:创新连接

    ACK:确认序号,确认网络包没有丢包。

    FIN:释放一个连接,表示接受连接。

    ack:序号,ack = seq+1

    整个的连接过程如下:

    用通俗的话说就是:1、客户端向服务器询问:你听得到我吗?

    2、服务器向客户端回答:我听得到你,你能听到我吗?

    3、客户端回复服务器:我听到了,开始通话吧。

    连接过程的第一步就是在TCP模块处创建表示连接控制信息的头部,头部包括很多字段,重要的是接收方和发送方的端口号和IP地址。

    当TCP头部创建好后,TCP模块就会将控制信息传递给IP模块并委托它进行发送;IP模块执行网络包发送操作后,网络包会通过网络到达服务器,然后服务器上的IP模块会将接收到的数据传递给TCP模块,服务器的TCP模块根据控制信息中的端口号找到对应的套接字即可。(P74)

    滑动窗口相关:

    滑动窗口来管理数据发送和ACK号的操作,怎么处理数据溢出问题呢?

    服务器端会把缓冲区的内存剩余放在窗口字段告诉发送方,这个能够接受的最大数据量被称为窗口的大小,它是TCP调优参数中非常有名的一个。

    通常将ACK号与窗口更新的包合并在一起进行发送,避免网络传输效率下降。

    确认断开的四次挥手(断开连接,删除套接字)

     

    为什么挥手要四次而不是三次呢?

    因为一个方向的断开,仅代表这个方向的传输结束了,而另一方可能还有数据,所以需要等另一方数据也全部传输完毕完成后,才能执行挥手。

    关于连接操作、收发操作和最后的断开操作,合并图可以看书p94页。

  • 相关阅读:
    SQL SERVER中DBLINK的实现
    如何在 Amazon AWS 上设置一台 Linux 服务器
    如何在 Amazon AWS 上设置一台 Linux 服务器
    django 后台数据直接交给页面
    django locals()
    让MySQL支持Emoji表情 mysql 5.6
    MySQL数据技术嘉年华,带你深入MySQL的世界
    Python爬虫入门教程 17-100 CSDN博客抓取数据
    JAVA生成图片缩略图、JAVA截取图片局部内容
    Python爬虫入门教程 16-100 500px摄影师社区抓取摄影师数据
  • 原文地址:https://www.cnblogs.com/fish-101/p/10423291.html
Copyright © 2020-2023  润新知