TCP状态图解

news/2024/5/17 16:56:43 标签: tcp, 以太网

Tcp状态机

1、为什么建立连接需要三次握手,断开连接需要四次握手?

     举例来说,C与S要可靠的沟通,沟通之前要又准备工作,沟通完了,要有清理工作。

     沟通之前的准备工作

    C:我要跟你说话,你注意听(SYN)

    S:好的(ACK),我也要跟你说话,你注意听(SYN)

    C:好的(ACK) 

    ........

    交流过程中

    .......

     沟通完了的清理工作

    C:我说完了(FIN)

    S:我知道了(ACK)

    S 再说一些...... 

    S:我说完了(FIN)

    C:我知道了(ACK)

    tcp是全双工的, 建立连接,ACK的同时可以SYN,而断开连接,往往不满足条件,C说完了,S可能还要再说一会。

2、为什么,TIME_WAIT要经过2个MSL(Maximum Segment Lifetime),才进入CLOSED?
     考虑下面的情况,C回了ACK立即进入CLOSED,假如S没有收到ACK,站在S的角度,S认为:C还不知道我已经说完了,我要再说一遍。但是这个时候C已经CLOSED,怎么解决这个问题?

     站在C的角度考虑,如果我回了ACK,S没有收到,那么S会重发FIN,从C回ACK,到C再次收到S的FIN,最多需要两个报文段周期。如果在两个报文段周期没有收到FIN,则说明,S肯定收到了我了ACK,进入CLOSED 


http://www.niftyadmin.cn/n/1192821.html

相关文章

Quartz Cron 表达式(二)

本文主要介绍Quartz Cron 表达式,关于Quartz 请看这里Quartz 基础知识及示例代码(一) Quartz Cron 表达式是用来展示时间集合的字符串。 本文地址: Quartz Cron 表达式被空格分开形成7个子表达式: 字段名允许的值允…

查看数据库表的数据量和SIZE大小的脚本修正

原文:查看数据库表的数据量和SIZE大小的脚本修正在使用桦仔的分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)的脚本时,遇到下面一些错误 这个是因为这些表的Schema是Maint,而不是默认的dbo,造…

win下多线程,同步等简单应用

1. 互斥量&#xff0c;Mutex Qt下环境需要pro下加 DEFINES - UNICODE [cpp] view plaincopy #include <Windows.h> #include <iostream> using namespace std; DWORD WINAPI Thread1(LPVOID lpParmeter); DWORD WINAPI Thread2(LPVOID lpParmeter); …

百度2017春招度度熊回家问题Java代码

本文地址&#xff1a;http://blog.csdn.net/shanglianlm/article/details/72588122 问题&#xff1a; 一个数轴上共有N个点&#xff0c;第一个点的坐标是度度熊现在位置&#xff0c;第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。 但是除了0号坐标和N-1号…

百度2017春招度度熊买帽子问题Java代码

本文地址&#xff1a;http://blog.csdn.net/shanglianlm/article/details/72590673 问题&#xff1a; 度度想去商场买一顶帽子&#xff0c;商场里有N顶帽子&#xff0c;有些帽子的价格可能相同&#xff0c;度度想买一顶价格第三便宜的帽子&#xff0c;问第三便宜的帽子价格多…

C++中的 多线程

有很多时候&#xff0c;我们希望可以在C类里面对那些比较耗时的函数使用多线程技术&#xff0c;但是熟悉C对象语法的人应该知道&#xff0c;C类的成员函数的函数指针不能直接做为参数传到pthread_create,主要因为是C成员函数指针带有类命名空间&#xff0c;同时成员函数末尾是会…

简单研究Android View绘制三 布局过程

2015-07-28 17:29:19 这一篇主要看看布局过程 一、布局过程肯定要不可避免的涉及到layout()和onLayout()方法&#xff0c;这两个方法都是定义在View.java中&#xff0c;源码如下&#xff1a; 1 /**2 * Assign a size and position to a view and all of its3 * d…

next.js with mobx

github关于状态管理 为什么需要状态管理&#xff1f;因为层次深&#xff0c;很不爽数据和行为分离&#xff0c;是个不错的实践为什么是mobx,而不是redux或者直接context redux 用好久了&#xff0c;尝试下新的&#xff0c;样板代码太多了&#xff0c;很不爽context 不推荐不是&…