TCP/IP学习笔记:TCP传输控制协议(一)

1 TCP的服务

尽管TCP和UDP都使用相同的网络层(IP),TCP却向用户提供一种面向连接的,可靠地字节流服务。两个使用TCP的应用,在彼此交换数据之前必须先建立一个TCP连接,在一个TCP连接中,仅有两方进行通信。TCP通过以下方式来提供可靠性:

(1)应用数据被分割成TCP认为最合适发送的数据块。

(2)当TCP发送一个段后它启动一个定时器,等待目的端确认收到这个报文段(超时重传)。

(3)当TCP收到发自TCP连接另一端的数据,它将发送一个确认。

(4)TCP将保持它首部和数据的检验和(端到端)。

(5)TCP报文段通过IP数据传输,可能出现失序,因此TCP会对收到的数据进行重新排序,将收到的正确顺序交给应用层。

(6)TCP将丢弃重复的数据

(7)TCP还能提供流量控制。TCP的接收端只允许另一发送接收端缓冲区所能接纳的数据,防止缓存区溢出。

另外TCP不提供对字节流的解释,对字节流的解释由TCP连接双方的应用层解释。

2 TCP首部

TCP数据被封装在一个IP数据报中:


TCP首部格式。如果不计算任选字段,通常是20个字节。

 

源端和目的端端口号:用于寻找发送端和接收端的应用进程。这2个值加上IP首部中的源端和目的端的IP地址构成唯一的确定的一个TCP连接。

序号:用来标示从TCP发送端到接收端发送的数据字节流,表示在这个报文段中的第一个数据字节(无符号数,到达2^32-1后又从0开始)当建立一个TCP新的连接时,SYN标志变1。序号字段包含由这个主机选择的该连接的初始序号ISN,该主机要发送数据的第一个字节序号为这个ISN加1,因为SYN标志需要消耗一个序号。每个传输的字节都被计数,确认序号包含发送端确认的一端所期望手下的下一个序号。因此确认序号应该上次成功收到的数据字节序号加1。只有ACK标志为1的确认序号字段才有效。

首部长度:占四位,表示首部长度为多少个4字节,因此首部最大为60字节

六个标志比特:

URG:紧急指针有效

ACK:确认序号有效

PSH:接收方应该尽快将这个报文交给应用层。

RST:重建连接

SYN:同步序号用来发起一个连接。

FIN:发送端完成发送任务

窗口大小:16位,最大65535字节。TCP的流量控制由每一端通过申明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值正是接收端期望接收的字节。

检验和:覆盖整个TCP报文段,发送端计算,接收端验证(需要加上伪首部)。

 

posted @ 2016-03-31 16:31  渣码农  阅读(404)  评论(0编辑  收藏  举报