传输层详解

1.传输层协议

        tcp协议  传输控制协议  (面向连接 稳定  慢)

        udp协议 用户数据报协议(无连接 不稳定  快)

 2.tcp协议

        tcp协议头部

        传输层详解_第1张图片

                

        端口号,目标端口号:区别应用程序

        客户端的端口号是随机的,服务端的端口号一般是固定的。

        序号:区分哪个应用程序访问服务端

        确认号(ack):告诉对方我收到了你的消息

        首部长度:表示tcp报文的首部长度

        控制位:SYN        FIN        ACK                RST        PSH        URG

        SYN: 同步位        syn=1 请求建立连接

        FIN:   结束位        fin=1 请求断开

        ACK: 确认位        syn=1 ack=1  同意建立连接  fin=1  ack=1 同意断开连接

        RST:  重置位        如果收到rst=1的报文,说明主机的连接出现了严重的错误,必须释放连接,然后在重新建立连接。或者说明上次的发送给主机的数据有问题,主机拒绝相应。

        PSH:  急切位       提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。 如果收到psh=1的报文,则表示对方应当立即把数据提交到给上层应用,而不是缓存起来,如果应用程序不将接收到的数据收走,就会一直停留在tcp接收缓存区中

        URG:  紧急位        表示本段文中发送的数据是否包含紧急数据。后面的紧急指针字段只有urg=1才有效

        窗口大小:调节每次发送的数据包量 服务端和客户端之间会根据实际情况自动调节数据包的个数

        紧急指针:提供额外的可靠性紧急指针:标记紧急数据在数据字段中的位置

3.tcp连接的三次握手

        传输层详解_第2张图片

        tcp三次握手的过程

        客户端主动发起请求报文,其中报文序号是随机产生的x,并且报文的控制位 SYN=1,代表请求建立连接。

        当服务端收到客户端发来的建立连接报文,会回复一个报文。其中报文序号是随机产生的y,生成一个确认号为客户端报文序号+1(x+1),并希望客户端下次发送的报文序号为x+1,然后控制位 SYN=1,ACK=1 代表同意建立连接。

        当客户端收到服务端发送的同意建立连接的报文时,会回复一个确认报文。其中报文序号为服务端要求的报文序号x+1,在生成一个确认号,值为服务端的报文号+1(y+1),最后,控制位ACK=1代表收到对方同意连接的请求。

  4.tcp断开连接的四次挥手

        传输层详解_第3张图片

  5.有限状态机

        传输层详解_第4张图片

        传输层详解_第5张图片

        1.CLOSED        没有任何连接状态

        2.LISTEN        监听状态,等待来自别的TCP端口的连接请求

        3.SYN-SENT        在发送连接请求后,等待对方确认

        4.SYN-RECEIVED        在收到和发送一个连接请求后,等待对方确认

        5.ESTABLISHED        代表传输连接建立,等待数据传输

        6.FIN-WAIT-1        主动关闭,主机已发送关闭连接请求,等待对方确认

        7.FIN-WAIT-2        主动关闭,主机已收到对方关闭传输连接的请求,等待对方发送关闭传输连接请求

        8. TIME-WAIT        完成双向传输连接关闭,等待所有分组消失

        9.CLOSE-WAIT        被动关闭,收到对方发来的关闭连接请求,并已确认

        10.LAST-ACK        被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失

        11.CLOSING        双方同时尝试关闭传输连接,等待对方确认

       客户端发送一个fin给服务端,自己进入FIN-WAIT-1状态,这是等待接收服务端报文有两种可能       

        1.ACK=1        进入半关闭状态,我收到了断开请求,但我们之间还有数据没传完

        2.ACK=1,FIN=1 我收到了断开请求,并断开了

      

你可能感兴趣的:(网络)