• 3次握手和4次挥手


    3次握手

    1). server通过调用listen函数来准备好接受外来连接,称为被动打开(passive open)。
    2). client通过connect进行主动打开(active open)。这引起client发送一个SYN(表示同步)分节,它告诉服务器客户将在(带建立的)连接中发送的数据的初始序列号。
    3). server必须确认客户的SYN(发送ACK),同时发送一个自己的SYN,它含有server将在同一连接中发送的数据的初始序列号。server在同一个分节中发送SYN和ACK。
    4). 客户必须确认server的SYN(ack K+1)。
    

    插入的图片

    4次挥手

    终止一个连接需要四个分节。
    	1). 某个应用首先调用close指向主动关闭(active close)。这端TCP于是发送一个FIN分节,表示数据发送完毕。
    	2). 接收到FIN的另一端被动关闭(passive close)。这个FIN由TCP确认。它的接收也作为文件结束符传递给接收端应用进程(放在已排队等待接收的任何其它数据之后),
    		因为FIN的接收意味着应用进程在相应连接上再也接收不到额外数据。
    	3). 一段时间后,接收到文件结束符的进程将调用close关闭它的套接口。这导致它的TCP也发送一个FIN。
    	4). 接收到这个FIN的原发送端TCP(即主动关闭的那一端)对它进行确认。
    	5). 每个FIN的ACK的确认号是这个FIN的序列号加1。
    
    注:
    	1). 在2~3之间可以有从被动端到主动端的数据流。
    	2). 套接口在关闭时,TCP都发送一个FIN。这种情况在调用close时会发生,然而在进程终止时,所有打开的套接字将自愿
    	(调用exit或从main返回)或不自愿(进程收到终止信号)地关闭,此时任然打开的TCP连接上也会发出一个FIN。
    	3). 通常情况是客户端主动关闭,但某些协议如HTTP则是server主动关闭。
    

    插入的图片

  • 相关阅读:
    Android测试入门篇
    SQL的基本知识
    正则表达式
    ES5语法
    vscode
    继承小结
    工作遇到的问题
    后台程序员的HTTP缓存
    xhr下载图片/服务器向客户端推送消息
    HTTP2.0
  • 原文地址:https://www.cnblogs.com/Desneo/p/7213970.html
Copyright © 2020-2023  润新知