计算机网络:2、TCP和UDP

2、TCP和UDP

简介

  • TCP(transmission Control Protocol):是一种通信标准,它使应用程序和计算设备能够在网络上交换消息。它的设计目的是在互联网上发送数据包,并确保数据和信息在网络上的成功传递。
  • UDP(the User Datagram Protocol):是一种跨Internet的通信协议,特别用于时间敏感的传输,如视频播放或DNS查找。它通过在数据传输之前不正式建立连接来加快通信速度。

TCP

  1. TCP是面向连接(虚连接)的传输层协议。
  2. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
  3. TCP提供可靠交付的服务,无差错、不丢失、不重复、按需到达。
  4. TCP提供全双工通信(发送缓存,接收缓存)。
  5. TCP面向字节流,TCP把应用程序交下来的数据看成仅仅是一连串的无结构字节流

报文段首部格式:

  • 源端口(2B)
  • 目的端口(2B)
  • 序号(4B):在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本表文段所发送的第一个字节的序号
  • 确认号(4B):期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1位置的所有数据都已正确收到。
  • 数据偏移(4bit):首部长度,TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B为单位,即一个数值是4B。
  • 控制位(6bit)
    • 紧急位URG:URG=1时,表明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用再缓存里排队,配合紧急指针字段使用。
    • 确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。
    • 推送位PSH:PSH=1时,接收方尽快交付应用进程,不用再等到缓存存满再向上交付。
    • 复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。
    • 同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。
    • 终止位:FIN=1时,表明此报文段发送发数据已发完,要求释放链接。
  • 窗口(2B):指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。
  • 检验和(2B):检验首部+数据,检验时要加上12B伪首部,第四个字段为6(TCP为6,UDP为17)。
  • 紧急指针(2B):URG=1时才有意义,指出本报文段中紧急数据的字节数。
  • 选项(可变长度):最大报文段长度MSS、窗口扩大、时间戳、选择确认......
  • 填充(保证4B的整数倍)

连接建立

TCP连接管理

TCP连接传输三个阶段:连接建立--->数据传送--->连接释放

TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。

建立连接过程(三次握手)

  1. 客户端发送连接请求报文段,无应用层数据。SYN=1, seq=x(随机)
  2. 服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。SYN=1, ACK=1, seq=y(随机), ack=x+1
  3. 客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。SYN=0, ACK=1, seq=x+1, ack=y+1

连接释放过程(四次挥手)

  1. 客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。FIN=1,seq=u
  2. 服务器端回送一个确认报文段,客户到服务器这个方向的连接释放了。ACK=1, seq=v, ack=u+1
  3. 服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。FIN=1, ACK=1, seq=w, ack=u+1
  4. 客户端回送一个确认报文段,在等到实践等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。ACK=1, seq=u+1, ack=w+1

可靠传输

TCP可靠传输的机制:校验;序号;确认;重传。

  • 超时重传:TCP咋发送方在规定时间内没收到确认就要重传已发送的报文段。TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间)。
  • 每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号。连续收到3个对于某序号小的报文段的确认,则认为其丢失,重传报文段(快速重传)。

流量控制

流量控制:让发送方慢点,要让接收方来得及接收。

TCP利用滑动窗口机制实现流量控制。

在通信过程中,接收方根据自己接收缓存的大小,动态的调整发送方的发送窗口大小,即接收窗口rwnd,发送方的发送窗口的大小=min(接收窗口rwnd, 拥塞窗口cwnd)

TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器 。若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值。

拥塞控制

出现拥塞的条件:对资源需求的综合>可用资源。

四种算法:慢开始、拥塞避免、快重传、快恢复。

假定:

  1. 数据单方向传递,而另一个方向只传送确认
  2. 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度,发送窗口 = Min{接收窗口rwnd, 拥塞窗口cwnd}

UDP

UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。

UDP的主要特点:

  1. UDP是无连接的,减少开销和发送数据之前的时延。
  2. UDP使用最大努力交付,即不保证可靠交付
  3. UDP是面向报文的,适合一次性传输是少量数据的网络应用。
  4. UDP无拥塞控制,适合很多实时应用。
  5. UDP首部开销小,为8B(16位源端口号,16位目的端口号,16位UDP长度,16位UDP校验和),TCP为20B。
    请添加图片描述

参考

【王道计算机考研 计算机网络】 https://www.bilibili.com/video/BV19E411D78Q/?p=140&share_source=copy_web&vd_source=a2b60e3364b59c2f5872cb3058666cae

相关推荐
不是编程家1 小时前
Linux第十五讲:Socket编程UDP
linux·运维·udp
bug攻城狮2 小时前
VMware 中 CentOS 7 设置静态 IP
tcp/ip·centos·php
njxiejing6 小时前
考研408计算机网络2023-2024年第33题解析
计算机网络·考研
qq_3597162313 小时前
UDP的使用
网络·网络协议·udp
上海云盾商务经理杨杨17 小时前
高防IP如何抵御CC攻击?2025年全面防护机制解析
网络·网络协议·tcp/ip·网络安全
李白你好17 小时前
Ping命令为何选择ICMP而非TCP/UDP?
网络协议·tcp/ip·udp
bug攻城狮17 小时前
CentOS 7 设置静态 IP 地址
linux·tcp/ip·centos
UNbuff_021 小时前
Linux ip 命令使用指南
linux·网络·tcp/ip
自我陶醉@1 天前
计算机网络---网络体系结构
网络·计算机网络·考研·智能路由器·408
没书读了1 天前
考研复习-计算机网络-第四章-网络层
计算机网络·考研