zoukankan      html  css  js  c++  java
  • 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主动关闭。
    

    插入的图片

  • 相关阅读:
    【Anagrams】 cpp
    【Count and Say】cpp
    【Roman To Integer】cpp
    【Integer To Roman】cpp
    【Valid Number】cpp
    重构之 实体与引用 逻辑实体 逻辑存在的形式 可引用逻辑实体 不可引用逻辑实体 散弹式修改
    Maven项目聚合 jar包锁定 依赖传递 私服
    Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
    mysql案例~tcpdump的使用
    tidb架构~本地化安装
  • 原文地址:https://www.cnblogs.com/Desneo/p/7213970.html
Copyright © 2011-2022 走看看