第二章 传输层TCP UDP

一.概述

TCP传输控制协议 (Transmission Control Protocol)。

TCP是一个面向连接的协议,为用户进程提供可靠的全双工字节流。TCP套接字是一种流套接字(streamsocket)。TCP关心确认、超时和重传之类的细节。大多数因特网应用程序使用TCP。注意,TCP既可以使用IPv4,也可以使用IPv6。

UDP用户数据报协议 (User Datagram Protocol)。

UDP是一个无连接协议。UDP套接字是一种数据报套接字 (datagram socket)。UDP数据报不能保证最终到达它们的目的地。与TCP一样,UDP既可以使用IPv4,也可以使用IPv6。

二.用户数据包协议UDP

UDP是一个简单的传输层协议,。应用进程往一个UDP套接字写入一个消息,该消息随后被封装 (encapsulating) 到一个UDP数据报,该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地。UDP不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次。
我们也说UDP提供无连接的 (connectionless)服务,因为UDP客户与服务器之间不必存在

任何长期的关系。举例来说,一个UDP客户可以创建一个套接字并发送一个数据报给一个给定
的服务器,然后立即用同一个套接字发送另一个数据报给另一个服务器。同样地,一个UDP服
务器可以用同一个UDP套接字从若干个不同的客户接收数据报,每个客户一个数据报。

三.传输控制协议TCP

1.TCP通过给其中每字节关联一个序列号对所发送的数据进行排序 (sequencing)。举例来说,

假设一个应用写2048字节到一个TCP套接字,导致TCP发送2个分节:第一个分节所含数据的序
列号为1~1024,第二个分节所含数据的序列号为1025~2048。(分节是TCP传递给IP的数据单
元。)如果这些分节非顺序到达,接收端TCP将先根据它们的序列号重新排序,再把结果数据传
递给接收应用。如果接收端TCP接收到来自对端的重复数据(譬如说对端认为一个分节已丢失
并因此重传,而这个分节并没有真正丢失,只是网络通信过于拥挤),它可以(根据序列号)判
定数据是重复的,从而丢弃重复数据。

2.再次,TCP提供流量控制(flow control)。TCP总是告知对端在任何时刻它一次能够从对端

接收多少字节的数据,这称为通告窗口 (advertised window)。在任何时刻,该窗口指出接收缓
冲区中当前可用的空间量,从而确保发送端发送的数据不会使接收缓冲区溢出。该窗口时刻动
态变化:当接收到来自发送端的数据时,窗口大小就减小,但是当接收端应用从缓冲区中读取
数据时,窗口大小就增大。通告窗口大小减小到0是有可能的:当TCP对应某个套接字的接收缓
冲区已满,导致它必须等待应用从该缓冲区读取数据时,方能从对端再接收数据。

3.最后,TCP连接是全双工的(full-duplex)。这意味着在一个给定的连接上应用可以在任何时刻在进出两个方向上既发送数据又接收数据。因此,TCP必须为每个数据流方向跟踪诸如序列号和通告窗口大小等状态信息。建立一个全双工连接后,需要的话可以把它转换成一个单工

连接(见6.6节)。

四.TCP连接的建立和终止

相关推荐
代码中介商17 小时前
HTTPS加密原理:图解安全传输全流程
网络协议·http·https
“初生”18 小时前
Codex 桌面端新会话 5 次 Reconnecting 怎么办?HTTP/SSE 完美修复方案(2026最新)
网络·网络协议·http
夜悊18 小时前
网络编程代码实例:IO复用版
网络协议
TechWayfarer19 小时前
IP画像在企业安全中的应用:它能做什么?不能替代什么
网络·python·tcp/ip·安全·网络安全
北京耐用通信19 小时前
耐达讯自动化工业网关:极简组态实现 Modbus 转 PROFINET 稳定通讯
人工智能·物联网·网络协议·自动化·信息与通信
天启HTTP20 小时前
开启全局代理后网络变慢,问题出在哪
开发语言·前端·网络·tcp/ip·php
刘哥测评技术zcwz62620 小时前
海外动态IP和静态IP需要怎么选择
网络·网络协议·tcp/ip
春风得意之时20 小时前
前端安装项目出现代理问题和ssl认证问题
前端·网络协议·ssl
MIXLLRED21 小时前
随笔——从“IP与网关不在同一网段”说起:网络连接故障的通用排查指南
网络·网络协议·tcp/ip
2401_8734794021 小时前
如何用IP离线库检测DNS隧道和C2通信?企业DNS安全防护指南
网络·数据库·tcp/ip·安全·ip