6-13 传输层协议TCP UDP

TCP和UDP简介

image-20231002162748210

  • TCP(Transmission Control Protocol,传输控制协议):属于可靠面向连接的网络协议

    • 可靠:保证数据传输没有被篡改
    • 面向连接:数据传输开始之前需要建立连接
    • 应用:如文件传输、登录数据传输
  • UDP(User Datagram Protocol,用户数据报协议):属于不可靠面向无连接的网络协议

    • 不可靠:不保证数据完整性等
    • 无连接:直接传输,不建立连接
    • 应用:对延时要求高的应用如视频传输

image-20231002163449244

TCP报文格式

了解即可,重点是源目端口号

image-20231002163536726

UDP报文格式

了解即可,重点是源目端口号

与TCP相比,UDP报文做了很大精简,省略诸多控制字段

image-20231002163551553

端口号

image-20231002163631588

  • 源端口随机分配,目标端口使用知名端口
  • 应用客户端使用的源端口一般为系统中未使用的且大于1024
  • 目的端口号为服务器端应用服务器的进程,如telnet为23

下面我们给出 TCP/IP 体系的应用层常用协议所使用的运输层熟知端口号

image-20230406203101000

TCP的控制机制

TCP序列号及确认号

确认号用来确认收到上一个数据包,以及表示期望收到下一个编号为ack的数据包

PC1的seq和PC2的ack有关,反之亦然

image-20231002164039942

TCP三次握手建立连接

  • Send SYN:标志位置为SYN表示请求建立连接

  • Send SYN、ACK:标志位置为SYN和ACK,ACK表示已经收到上一个SYN请求(ack = seq +1 表示收到上一个数据包),并返回一个SYN,两个数据包合二为一

  • Established:确认建立连接,标志位置为ACK(ack = seq +1 表示收到上一个数据包)

三次握手过程:注意大写ACK标志位是用来确认收到了对方的SYN标志位请求

第n次握手 报文详细 笔者注
A请求向B发起连接 A向B发送seq = 0、标志位为SYN的数据包 A确认A的发送功能正常
B收到请求并发送请求确认 B收到上述报文,向A发送seq = 0、ack = 1、标志位为SYN和ACK二合一的数据包 B确认A的发送功能正常,B的接收功能正常
A收到并发送 A收到上述报文,向B发送seq = 1、ack = 1、标志位为ACK的数据包 A确认A的接收功能正常,B的发送功能正常

image-20231002164132790

TCP四次挥手断开连接

第n次挥手 报文详细
A发送FIN请求 标志位置为FIN、ACK
B发送ACK 标志位置为ACK
B再发送FIN请求 标志位置为FIN、ACK
A发送ACK 标志位置为ACK

image-20231002164731399

TCP的滑动窗口机制

接收方存在一个缓冲区即窗口,窗口大小决定了在收到确认前可以发送的数据量

缓冲的窗口保证了接收方不会因为处理不过来而导致直接丢弃数据

image-20231002165010516

详细见《计算机网络ComputerNetworkNotes》本节内容

站内搜索

没有找到内容!