博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP连接
阅读量:5333 次
发布时间:2019-06-15

本文共 795 字,大约阅读时间需要 2 分钟。

在TCP中,面向连接主要有以下三个过程:连接建立,数据传输和连接终止,接下来我们分别讨论这三种内容。

TCP连接建立

1. 打开三次握手:

  • 客户端向服务端发送一个SYN段,这个段用于序号同步,它告诉服务端需要传输的数据段的初始序号是多少。

    SYN段不携带数据,占用一个序号

  • 服务器端收到ACK段后,向客户端发送SYN+ACK段,因为TCP是一个双向通信的连接,所以再发一次SYN段是用于确定服务器向客户端发送段时的初始序号,ACK段用于确认服务器接收到了来自客户端的SYN段。

    SYN+ACK段不携带数据,占用一个序号

  • 客户端向服务器发送ACK段确认收到了来自服务器的ACK+SYN段。

    由于一些协议允许客户端在第三次握手时携带第一块数据,例如HTTP协议中就将网页的请求报文放在了第三次握手中。

    所以此时ACK段携带数据时,会占用序号,否则不占用序号。

2. 关闭三次握手和半关闭:

2.1 全关闭

  • 客户端向服务器发送FIN段用来告诉服务器将连接关闭。
  • 服务器向客户端发送FIN+ACK段来告诉客户端将连接关闭,并且确认已经接收了来自客户端的FIN段。
  • 客户端发送ACK段表示接收到了服务器的FIN段。整个TCP连接关闭

2.2 半关闭

在TCP中,一端停止向另一方发送数据时,仍然可以接收来自另一端的数据,这时需要采用的是四次握手的半关闭

  • 客户端向服务器发送FIN段用来告诉服务器将连接关闭。
  • 服务器向客户端发送ACK段确认已经接收了来自客户端的FIN段。但是服务器向客户端的通信并没有关闭

    (服务器这时仍然可向客户端发送数据段)

  • 服务器发送FIN段表示这时关闭向客户端的通信
  • 客户端向服务器发送ACK段用来表示接收到了服务器的FIN段。整个连接关闭。

(未完待续。。。)

转载于:https://www.cnblogs.com/Western-Trail/p/8893050.html

你可能感兴趣的文章
TCP协议中的三次握手和四次挥手(图解)
查看>>
更改Win10用户名为英文,还有一些善后
查看>>
第1章2节《MonkeyRunner源码剖析》概述:边界(原创)
查看>>
android:layout_gravity和android:gravity的区别
查看>>
Spring事务管理(详解+实例)
查看>>
aix转移lv大小到其它磁盘
查看>>
JS实现上传图片的三种方法并实现预览图片功能
查看>>
使用Yii框架完整搭建网站流程入门
查看>>
2018.09.17错误1
查看>>
AD基础知识以及查询与递归
查看>>
MAC帧和IP数据报
查看>>
012 pandas与matplotlib结合制图
查看>>
java初步认识
查看>>
[SHOI2015]超能粒子炮·改
查看>>
[SHOI2015]脑洞治疗仪
查看>>
[poj 2342]简单树dp
查看>>
Springmvc中@RequestMapping 属性用法归纳
查看>>
队列Queue和栈
查看>>
Yii2 Restful api分页
查看>>
百度编辑器ueditor简单易用
查看>>