TCP 与 UDP二者均采用IP作为网络层协议,但提供不同的服务.TCP提供面连接的,可靠地字节流服务。
面向连接是指采用TCP进行通信的应用,在交换数据之前必须建立一个TCP连接。
TCP通过以下方式提供可靠服务:
1、应用数据被分割成TCP认为最合适的发送数据块。由TCP传递给IP的信息单位称作TCP报文段或者tcp segment。
2、当TCP发出一个segment之后,启动定时器,等待接收端(目的端)确认该报文段。如果不能及时收到确认,则重发该报文段。
3、当TCP收到发自TCP连接另一端的数据,它将发送一个确认。且通常该确认非立即发送。
4、TCP将保持它的首部与数据的校验和,即,TCP首部中的校验和是针对TCP首部以及其TCP数据部分的。如果接收端发现检验和有差错,则TCP丢弃该报文段,且不再发送确认报文,希望发送端超时重发。
5、TCP报文段作为IP数据报传输,而IP数据报的到达可能失序,故TCP报文段的到达也可能失序。如果必要,则CP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
6、既然IP数据报肯能发生重复,则TCP的接收端必须丢掉重复的数据。
7、TCP还提供流量控制。
8、TCP对字节流的内容不做任何解释。
TCP 首部:
序号用于标示从TCP发送端向TCP接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
在建立一个新的连接时,通常系统会选择一个初始的序列号ISN:Initial Sequence Number,经过三次握手
之后,TCP连接建立起来,则发送端发送的第一份数据的字节序号为这个初始序号加一,即ISN+1。这与三次握手时候的确认有关。
TCP连接建立后:
1、发送端的第一个
发送 报文的序列号为ISN1+1,若发送端的第一个TCP segment(TCP 数据部分)长度为 len1,则其第二个报文的序列号为ISN1+1+len1,以此类推;
2、确认序号为:发送确认的一端期望收到的下一个序号。
报文自己看吧:
syn_fin.rar
阅读(947) | 评论(0) | 转发(0) |