(1)TCP特点
1.TCP是字节流服务。发送端应用程序执行写操作的数据先被放入TCP发送缓冲区中。当TCP模块开始发送数据时,缓冲区中的这些数据被封装成一个或多个报文段发出。对于接收端,TCP模块将收到的报文段携带的数据按照TCP报文段的序号依次放入接受缓冲区中。
数据经过如下 步骤:send()、TCP发送缓冲区、TCP报文段、TCP接受缓冲区、recv()
2.TCP传输是可靠的,因为TCP发送端发送的每一个报文段都必须收到确认应答才认为这个报文段发送成功,同时采用超时重传机制。另外,TCP采用序列号和确认序列号的机制,发送端发送序列号,接收端根据接收的序列号和数据长度,将下一步应该接收的序号作为确认应答返回。因此TCP保证可以识别已接收数据同时避免重复接受。
3.TCP协议会对接受到的报文段进行重排、整理,最后交付到应用层。
(2)TCP头部结构
1.16位源端口号、16位目的端口号。
2.32位序号seq。代表一个传输方向上报文段的序号。同一传输方向上的第一个报文段seq被初始化为某一随机数ISN,则后续报文段的seq将被设置成ISN加上所携带数据的第一个字节相对整个字节流的偏移。
3.32位确认号ack。其值为收到的TCP报文段的seq+1。报文段要同时携带seq和对于收到的报文段作出确认的ack。
4.6位标志位。URG:紧急指针是否有效。ACK:确认号是否有效,携带ACK标志的为确认报文段。PSH:提示接收端应用程序应该立即从TCP素具缓冲区中读取数据,RST:要求对方重新建立连接,携带RST的为复位报文段。SYN:请求建立连接,携带SYN为同步报文段。FIN:通知对方本端关闭连接,FIN为结束报文段。
5.16位窗口大小。
6.16位校验和。用以校验TCP报文段完整合法性。
7.16位紧急指针。
8.TCP头部选项。
tcpdum出来的TCP数据段结果
网友评论