第二章 传输层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连接的建立和终止

相关推荐
taxunjishu18 小时前
Profinet转MODBUS TCP在精细化工塔讯工业自动化中的应用方案
网络·网络协议
Anastasiozzzz19 小时前
深入浅出TCP拥塞控制:研究拥塞控制的底层逻辑
网络·网络协议·tcp/ip
.select.19 小时前
TCP 2
服务器·网络·tcp/ip
@insist12320 小时前
网络工程师-因特网与网络互联(二):ARP 与 ICMP,网络层排错双雄
服务器·网络·网络协议·网络工程师·软考·软件水平考试
火车叼位20 小时前
从零掌握端口转发:netsh interface portproxy 与 SSH 隧道全场景实战
网络协议
zl_dfq20 小时前
计算机网络 之 【UDP协议】(UDP报文格式及特点、UDP内核实现简介、UDP VS TCP)
网络协议·计算机网络·udp
芯智工坊21 小时前
第12章 Mosquitto插件与扩展机制
mqtt·网络协议·开源
嫂子的姐夫21 小时前
31-RPC技术与websocket介绍
websocket·网络协议·rpc
运维儿21 小时前
4.VLAN 技术:二层网络的优化之道
网络·网络协议·tcp/ip·linux 网络·云计算网络
OnlyEasyCode21 小时前
IIS配置HTTPS如何多个二级域名连接!
服务器·网络协议·https