内容简介:TCP协议(Transmission Control Protocol 传输控制协议)不同于UDP协议,它是一个面向连接(一对一)的,可靠(做了差错控制)的字节流(不限长度)服务。TCP的可靠性通过下面方式来控制:TCP数据包是封装在IP数据包中的TCP首部,如果不计算任选字段,通常为20个字节。
TCP协议(Transmission Control Protocol 传输控制协议)不同于UDP协议,它是一个面向连接(一对一)的,可靠(做了差错控制)的字节流(不限长度)服务。TCP的可靠性通过下面方式来控制:
- 将应用数据分割成TCP认为最合适长度的数据块。减少IP层的分片现象的发生。
- 当TCP发送一份数据包后,它启动一个定时器,等待目的端确认收到这份数据包。如果不能及时收到一个确认,将重发该数据包。确定对方收到数据了。
- 当TCP接收端收到一个数据包时候,会发送一份确认数据包。告诉对方已经收到数据了。
- TCP将对它的首部和数据部分做校验和。防止传输中出错。
- TCP会对收到的数据进行排序,按照正确的顺序提交给应用。
- TCP会抛弃重复的数据。
- TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。
二、TCP数据包结构
TCP数据包是封装在IP数据包中的
TCP首部,如果不计算任选字段,通常为20个字节。
- 每个TCP段都包含源端和目的端的端口号。
- 序号用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。序号字段包含由这个主机选择的该连接的初始序号ISN(Initial Sequence Number)。
- 既然每个传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。
- 首部长度给出首部中32bit(一个字,两个字节)的数目。长度为4bit。需要这个值是因为任选字段的长度是可变的。
- 在TCP首部中有6个标志比特。
- URG:紧急指针( urgent pointer)有效。
- ACK:确认序号有效。
- PSH:接收方应该尽快将这个数据包交给应用层。
- RST:重新建立连接。
- SYN:同步序号用来发起一个连接。只有在三次握手的时候才会有。
- FIN:发送端完成发送任务。只有在结束时候才有。
- 窗口大小:TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。
- 检验和:覆盖了整个的 TCP数据包。
- 紧急指针:当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
- 最常见的可选字段是最长报文大小,又称为 MSS(Maximum Segment Size)。
都看到这里了,要不要扫二维码关注一下微信公众号 林湾村龙猫 。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java Servlet & JSP Cookbook
Bruce W. Perry / O'Reilly Media / 2003-12-1 / USD 49.99
With literally hundreds of examples and thousands of lines of code, the Java Servlet and JSP Cookbook yields tips and techniques that any Java web developer who uses JavaServer Pages or servlets will ......一起来看看 《Java Servlet & JSP Cookbook》 这本书的介绍吧!