传输层(TCP/UDP)

本文深入探讨了TCP与UDP的区别,包括基于连接与无连接、头部结构、三次握手和四次挥手过程。详细介绍了TCP连接状态,如FIN_WAIT_2、CLOSE_WAIT和TIME_WAIT,并解析了RTT、RTO和超时重传的概念。此外,还阐述了TCP的流量控制和拥塞控制原理,以及如何提供可靠数据传输。
摘要由CSDN通过智能技术生成
TCP与UDP基本区别
  1. 基于连接与无连接

  2. TCP要求系统资源较多,UDP较少;

  3. UDP程序结构较简单

  4. 流模式(TCP)与数据报模式(UDP);

  5. TCP保证数据正确性,UDP可能丢包

  6. TCP保证数据顺序,UDP不保证

TCP头部
  • 序号(32bit):传输方向上字节流的字节编号。初始时序号会被设置一个随机的初始值(ISN),之后每次发送数据时,序号值 = ISN + 数据在整个字节流中的偏移。假设A -> B且ISN = 1024,第一段数据512字节已经到B,则第二段数据发送时序号为1024 + 512。用于解决网络包乱序问题。

  • 确认号(32bit):接收方对发送方TCP报文段的响应,其值是收到的序号值 + 1。

  • 首部长(4bit):标识首部有多少个4字节 * 首部长,最大为15,即60字节。

  • 标志位(6bit):

    • URG:标志紧急指针是否有效。

    • ACK:标志确认号是否有效(确认报文段)。用于解决丢包问题。

    • PSH:提示接收端立即从缓冲读走数据。

    • RST:表示要求对方重新建立连接(复位报文段)。

    • SYN:表示请求建立一个连接(连接报文段)。

    • FIN:表示关闭连接(断开报文段)。

  • 窗口(16bit):接收窗口。用于告知对方(发送方)本方的缓冲还能接收多少字节数据。用于解决流控。

  • 校验和(16bit):接收端用CRC检验整个报文段有无损坏。

三次握手过程

  • 第一次:客户端发含SYN位,SEQ_NUM = S的包到服务器。(客 -> SYN_SEND)

  • 第二次:服务器发含ACK,SYN位且ACK_NUM = S + 1,SEQ_NUM = P的包到客户机。(服 -> SYN_RECV)

  • 第三次:客户机发送含ACK位,ACK_NUM = P + 1的包到服务器。(客 -> ESTABLISH,服 -> ESTABLISH)

四次挥手过程
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值