TCP 与 UDP

本文深入解析TCP(传输控制协议)和UDP(用户数据报协议)的特性与工作原理,包括面向连接与非连接通信的区别,三次握手与四次挥手的过程,以及TCP分段的详细格式与确认机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCP:Transmission Control Protocol,是一种面向连接的通信方式

UDP:User Datagram Protocol,是一种非连接的通信方式

面向连接的通信方式:发送者与接收者之间通过会话的方式确保数据已全部传递

无连接的通信方式:发送者不会确认接收者的状态,只会将信息传递出去而已

* 面向连接到通信方式是一种可靠的通信方式

二层通信(这里指以太网通信)-帧交换过程:是一种无连接的通信方式

三层通信(网络层通信,IP通信):是一种无连接的通信方式

TCP连接:在传输层(四层)上可能进行TCP段(TCP Segment)的交换。建立TCP会话(TCP Session),双方保持TCP控制段的交互。由此可看出TCP通信是一种面向连接、可靠的通信方式。

SYN:synchronization  同步

ACk:acknowledgement 确认

TCP连接:TCP模块通过“三次握手(Three-way Handshaking)”来建立TCP会话

三次握手:指在TCP会话建立的过程中总共进行交换了3个TCP控制段,分别是一个SYN端、一个SYN+ACK段、一个ACK段

TCP会话终止:当TCP数据段交换结束时,双方需要发送FIN(Finish)段和ACK段来明确的终止TCP会话,称为四次握手。

TCP分段的格式:

TCP分段格式

 

序号:Sequance Number,简称SeqNo,该字段32bit,是该TCP分段自身的序号,序号由本地随机产生。接收这个分段的一方可根据这个序号来判定是否存在漏收或重收的情况。

确认序号:Acknowledge Number,简称AckNo。该字段32bit,期待收到对方下一个报文段的第一个数据字节的序号,因此当前报文段最后一个字节的编号+1即是确认号

分段头部长度:该字段4bit,标识了分段头部的长度。分段头部的长度是不固定的,但是分段头部的字节数一定是4的整数倍

标志:该字段6bit。这6个bit分别标识:URG、ACK、PSH、RST、SYN、FIN

URG:紧急指针是否有效。为1,表示某一位需要被优先处理

ACK:确认号是否有效,一般置1

PSH:提示接收端应用程序立即从TCP缓冲区把数据读走

RST:对方要求重新建立连接,复位

SYN:请求建立连接,并在其序列号的字段进行序列号的初始值设定

FIN:希望断开连接

窗口大小:接收缓冲区的大小,TCP不允许发送超过此处所示大小的数据

校验和:发送端填充,CRC校验,接收校验不通过,则认为数据有问题。和UDP的区别是,UDP校验的是数据本身,TCP校验的不仅包含TCP首部,而且包含TCP数据部分

TCP确认与重传机制:服务端每发送一个数据段,都必须等待客户端的一个确认(回应)。若超时未收到客户端的确认,服务端会再次发送该数据段

为何需要三次握手,两次不可以吗:我们来分析一种特殊情况,假设客户端请求建立连接,发给服务器SYN包等待服务器确认,服务器收到确认后,如果是两次握手,假设服务器给客户端在第二次握手时发送数据,数据从服务器发出,服务器认为连接已经建立,但在发送数据的过程中数据丢失,客户端认为连接没有建立,会进行重传。假设每次发送的数据一直在丢失,客户端一直SYN,服务器就会产生多个无效连接,占用资源,这个时候服务器可能会挂掉。这个现象就是我们听过的“SYN的洪水攻击”。

为何是四次挥手:双方关闭连接要经过双方都同意。所以,首先是客服端给服务器发送FIN,要求关闭连接,服务器收到后会发送一个ACK进行确认。服务器然后再发送一个FIN,客户端发送ACK确认,并进入TIME_WAIT状态。等待2MSL后自动关闭

TCP协议中的端口:是一种抽象的、被称为“应用端口”的端口

端口:分为知名端口和非知名端口;知名端口范围0-1023,比如(80:http端口;21:ftp端口);非知名端口范围1024-65535

UDP:User Datagram Protocol,UDP通信是一种非连接的通信方式

UDP报文的格式

IETF规定了哪些应用必须使用TCP协议,哪些应用程序必须使用UDP,哪些协议是跳过传输层直接使用IP协议等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值