TCP的概述

  TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80。

TCP连接的建立(三次握手)

 

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

TCP连接的释放(四次挥手)

    

第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

最新文章

  1. jquery 和 css 属性
  2. [Java] xms xmx XX:PermSize XX:MaxPermSize 参数意义解析
  3. java build path->source folder分析
  4. 用PyAIML开发简单的对话机器人
  5. MySQL - 定时备份
  6. C语言中将数字转换为字符串的方法
  7. 深入浅出ES6(六):解构 Destructuring
  8. Hibernate配置文件hbm主键的generator可选项
  9. CF_216_Div_2
  10. (转载)myeclipse项目名称重命名
  11. HDU_1010——小狗走迷宫DFS
  12. Ubuntu 12.04 搭建 Eclipse Android 开发环境(转)
  13. PyQt:个性化登录界面模仿QQ登录
  14. LOJ 6277-6280 数列分块入门 1-4
  15. 使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件
  16. 最课程阶段大作业06:U度节能平台控制系统
  17. mysql系列十二、mysql常用hint
  18. WHY数学表达式的3D可视化
  19. Email standards
  20. MySQL 5.7怎么爬出暂时表空间的坑

热门文章

  1. poj 1061 青蛙约会(扩展欧几里德)
  2. 51nod 1126 求递推序列的第N项
  3. 题解报告:poj 3320 Jessica's Reading Problem(尺取法)
  4. matlab实现算术编解码 分类: 图像处理 2014-06-01 23:01 357人阅读 评论(0) 收藏
  5. HBase Region Assign流程详解
  6. 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法
  7. Spring注解驱动开发之扩展原理
  8. [Luogu1848][USACO12OPEN]书架Bookshelf DP+set+决策单调性
  9. input 全选 jquery封装方法
  10. mysql 字段包含某个字符的函数