TCP建立连接释放链接、截断二进制指数避让、CRC校验
2017-06-14 11:09
591 查看
1. TCP建立链接
图一
客户端A主动打开链接,服务器B被动打开链接。B的TCP服务器进程先创建传输控制块TCB,准备接收客户端链接请求,然后服务B进入到了LISTEN状态,等待客户端链接。
客户端A首先建立TCB,然后向服务器B发送连接请求报文段,在报文的首部SYN=1,同时选择一个初始序号seq=x。TCP的SYN报文段不能携带数据,但是要消耗一个序号。此时客户端A进入SYN-SENT状态(请求链接状态)。
服务器B接到链接请求后,若同意建立链接,则向A发送确认。在确认报文中把SYN和ACK都置1,确认号为ack+1,初始化序列为seq=y,消耗掉一个序列,且不能携带数据。此时服务器B进入到SYN-RCVD状态(半断开连接)。
客户端A收到服务器B的确认后,还要向B发送确,此时ACK=1,seq=x+1,ack=y+1。ACK = 1可以携带数据,若没有携带数据则不消耗序号。客户端A进入ESTAB-LISHED状态。服务器B收到确认信号后进入ESTAB-LISHED状态。
2. TCP链接释放
图二
在数据传输结束后,通信的双方都可以释放链接。在A和B都处于ESTAB-LISHED状态。A的应用进程先向其TCP发出链接释放报文段,并停止在发送数据,主动关闭tcp链接。A把链接释放报文段的FIN置1,seq=u(u=前面已经发送数据的最后一个字节+1)。此时A进入FIN-WAIT-1(终止等待1)状态,等在B的确认。FIN报文段不能携带数据,但要消耗一个序号。
B接收到链接释放报文后即发出确认,确认号是ack= u+1,seq = u(u=前面已经发送数据的最后一个报文的序号+1)。然后B进入CLOSE-WAIT(关闭等待)状态。TCP服务器进程通知高层应用进程,因此从A到B方向的链接就被释放了,此时TCP链接处于半关闭状态。
A收到B的确认后,就进入FIN-WAIT2(终止等待2)状态,等待B发出的链接释放报文。
若B已经没有数据要想A发送,其应用进程就通知TCP释放链接。此时B发出的链接释放报文必须使FIN=1。ack = u+1,seq=w(w=前面已经发送数据的最后一个字节的序号+1)。这时B进入LAST-ACK(最后确认)状态。
A收到B的链接释放报文,必须对其发出确认。ACK=1,ack = w+1,seq = u+1。然后进入TIME-WAIT(时间等待)状态。必须等到时间等待计数器设置的时间2MSL后才进入closed状态。
时间等待是为了保证A发送的最后一个ACK能够到达B。
截断二进制指数避让:
① 协议规定基本退让时间为争用时间的2τ,具体的争用时间为51.2μS。② 从离散的整数集合[0,1…2^k-1]中抽取一个随机数R,重传时间就是R倍的争用时间。K的计算公式为:K=min(重传次数,10);
③ 当重传次数超过16次时,则丢弃该帧并向高层汇报。
循环冗余码(CRC校验):
M=101001 P=1101 2^n M = 101001000 冗余码=001图三
相关文章推荐
- 【网络】TCP三次握手建立连接和四次挥手释放链接
- TCP建立连接和释放链接
- TCP连接建立(三次握手)和释放(四次握手)
- TCP建立连接与释放连接
- TCP连接的建立于释放
- TCP连接的建立(三次握手)和释放(四次握手)
- [网络编程] TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结
- TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结
- 详解tcp/ip连接建立与释放
- TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结
- TCP 建立连接的三次握手 和释放连接的四次挥手 图解
- tcp连接的建立(三次握手)和释放(四次握手)
- TCP传输连接建立与释放详解
- 【网络协议】TCP连接的建立和释放
- TCP连接的建立(三次握手)和释放(四次握手)
- TCP连接的建立(三次握手)和释放(四次握手)
- TCP传输连接建立与释放详解
- TCP传输连接建立与释放详解
- TCP传输连接建立与释放详解
- 【网络协议】TCP连接的建立和释放