tcp协议的六个标识位
6个标识位:
URG 紧急指针,告诉接收TCP模块紧要指针域指着紧要数据。
ACK 置1时表示确认号(为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。
PSH 置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。
RST 置1时重建连接。如果接收到RST位时候,通常发生了某些错误。
SYN 置1时用来发起一个连接。
FIN 置1时表示发端完成发送任务。用来释放连接,表明发送方已经没有数据发送了。
其中URG不能和PSH标志位同时使用。
URG为紧急数据标志,如果URG为1,表示本数据包中包含紧急数据。此时紧急数据指针表示的值有效,它表示在紧急数据之后的第一个字节的偏移值(即紧急数据的总长度)。
ACK为确认标志位。如果ACK为1,表示数据包中的确认号有效。
PSH位,表示强迫数据传输。
RST标志位用来复位一条连接。当RST=1时,表示出现严重错误,必须释放连接,然后再重新建立。
SYN标志位用来建立连接,如果SYN=1而ACK=0,表明它是一个连接请求;如果SYN=1且ACK=1,则表示同意建立一个连接。
FIN为1时,表示数据已经发送完毕,希望释放连接。
不合法的标志位组合。
1、所有标志位都为0。
2、SYN和FIN同时被置1。
3、SYN和RST同时被置1。
4、FIN和RST同时被置1。
5、FIN位被置1,但ACK位没有被置1。
6、PSH位被置1,但ACK位没有被置1。
7、URG位被置1,但ACK位没有被置1。
了解到了TCP标志位的含义,就可以了解TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这 是第一次握手;接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确 认数据包,这是第二次握手;最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手。之后,一个TCP连接 建立,开始通讯。
最新文章
- 文本编辑器VIM/VI
- [转]IIS添加MIME扩展类型及常用的MIME类型列表
- linux中comm命令用法
- VS2010安装失败解决办法
- (转)微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(采用 Baidu Eclipse)
- 【Deep Learning学习笔记】Dynamic Auto-Encoders for Semantic Indexing_Mirowski_NIPS2010
- CentOS 7.2 部署Saltstack
- 201521123040《Java程序设计》第2周学习总结
- web开发布局---传统布局篇
- Leetcode 4.28 string
- POJ 2606
- it面试技巧
- Ubuntu 14.04 下 安装Protocol Buffers
- MYSQL创建表的约束条件(可选)
- Wince6.0模拟器下载和使用方法
- [Clr via C#读书笔记]Cp5基元类型引用类型值类型
- matplotlib之极坐标系的极径网格线(rgrids)的显示刻度
- Java中的equals学习小结
- charles破解激活方法,注册码
- PCL+Qt+VS可视化点云
热门文章
- 成都Uber优步司机奖励政策(2月20日)
- WPF Style Setter use a TemplateBinding?
- JAVA FILE.renameTo跨文件系统移动文件失败
- 「日常训练」Jin Yong’s Wukong Ranking List(HihoCoder-1870)
- Qt-QML-给我的导航条写一个动画-State-Transition
- Nodejs Express笔记
- jupyter notebook 使用cmd命令窗口打开
- Python中如何Getting Help
- ptrdiff_t类型
- LintCode-381.螺旋矩阵 II