首页 > 其他分享 >TCP与UDP协议

TCP与UDP协议

时间:2024-10-23 09:51:09浏览次数:3  
标签:协议 UDP 字节 ACK 报文 TCP 发送 拥塞

(1)TCP协议
面向连接、可靠、基于字节的传输,IP报头中协议号为6。一般用于对可靠性要求较高的应用。
(2)UDP协议
无连接、不可靠、基于报文的传输,IP报头中协议号为17。主机不需维持连接状态具有较高的传输效率,可靠性由应用层来提供。

TCP报头结构

① 源端口和目的端口:传输层与应用层的服务接口。

② 序号:TCP连接传送的数据流中的每一个字节都有一个序号。序号字段是本报文段发送的数据的第一个字节的序号。

③ 确认号:期望收到对方下一个报文段的数据的第一个字节的序号。

④)数据偏移:指出报文段的数据起始处距离TCP报文段的起始处有多远。实际上就是TCP报文段首部的长度。范围20-60字节,默认为20字节。

⑤ 控制位:
URG(紧急指针):URG=1时,系统报文段中有紧急数据应尽快传送,

ACK(确认序号):ACK=1时确认号字段才有效,ACK=0时确认号字段无效。

PSH(推送):接收方收到PSH=1的报文段时不等待缓冲填满就提交到应用进程

RST(重置连接):RST=1时,表明TCP连接中出现严重差错,必须释放连接。

SYN(同步序列编号):SYN=1时,表明请求建立连接。

FIN(结束标志):当FIN=1时,发送端的数据已发送完毕并要求释放传输连接

⑥ 窗口:滑动窗口大小,用来控制对方发送的数据量,单位是字节,指明对方发送窗口的上限。窗口大小是一个16bit字段,因而窗口大小最大为65535。

⑦ 校验和:奇偶校验,校验的范围包括首部和数据两个部分,计算校验和时需要在报文段前加上伪首部(包括源目IP地址,IP协议号)。必选字段。

⑧紧急指针:指出本报文段中紧急数据最后一个字节的序号。只有当紧急比特URG=1时才有效。

UDP报头结构

①源端口和目的端口:是传输层与应用层的服务接口。

②长度:UDP的数据报长度(包含报头和数据),最小值为8字节(只有报头)

③ 校验和:覆盖UDP首部和UDP数据,计算校验和时需要在报文段前加上伪首部(包括源目IP地址,IP协议号,UDP长度)。必选字段。

TCP三次握手

TCP四次挥手

TCP连接状态

① CLOSED:关闭状态,没有连接
② LISTEN:侦听并等待对端的TCP连接请求

③ SYN-SENT:发送SYN连接请求后,等待对端回复SYN请求

④ SYN-RECEIVED:回复SYN请求后,等待对端响应ACK消息

⑤ ESTABLISHED:代表连接建立,双方在这个状态下进行TCP数据交互

⑥ CLOSE-WAIT:等待本地用户(进程)发送FIN关闭请求给对端

⑦ CLOSING:双方同时发送FIN时,进入CLOSING,等待对端发送响应ACK消息

⑧ TIME-WAIT:该状态是为了确保对端收到了FIN请求的ACK响应。

TCP协议四大机制

TCP字节编号确认机制

TCP是面向字节传输。需要将多个字节组成报文段传输,每个字节都有序号。在连接建立时,双方商定初始序号。TCP头部中的序号数值表示发送的报文段中的第1个字节的序号。TCP的确认号表示接收端期望下次收到的报文段中的第1个字节的序号,同时表示对之前接收到的报文段进行了确认。

TCP流量控制机制

TCP的流量控制使用滑动窗口机制实现,窗口最大为65535字节
① 发送窗口(swnd):发送方维护发送窗口,窗口大小取决于网络拥塞情况和接收方的能力。
② 接收窗口(rwnd):接收方维护接收窗口,窗口大小取决于接收方的缓冲区大小和处理能力。
③ 拥塞窗口(cwnd):拥塞窗口取决于网络的拥塞程度,动态变化。网络没有出现拥塞,则cwnd放大;出现拥塞,则cwnd减小。

当接收方成功接收到数据后,会将窗口向前滑动,并通知发送方继续发送更多的数据发送方收到对发送数据的确认后,也会将发送窗口向前滑动。如果发送方收到rwnd=0的TCP数据,则停止发送数据,直到接收到rwnd≠0。

TCP拥塞控制机制

在TCP拥塞控制机制包括慢启动和拥塞避免。TCP刚建立连接时,cwnd设为1,发送1个报文,如果收到接收方ACK报文,就继续以2方式放大拥塞窗口,直到cwnd>慢启动初始阈值ssthresh,进入拥塞避免阶段,TCP采用线性方式放大cwnd,即发送方每收到一个ACK确认报文,cwnd增加1,直到发送超时,ssthresh会减半到超时时刻cwnd大小的一半,然后cwnd会从1开始重复慢启动和拥塞避免步骤。

(1)快速重传:当接收方收到一个失序的报文段后会立即发出重复确认,以便让发送方及早知道有报文段没有发送到达。发送方只要连续收到三个重复确认,就立即重传对方没有收到的报文段。
(2)快速恢复:当发送方连续收到三个重复确认,立即把ssthresh减半,然后直接执行拥塞避免算法。

TCP重传机制

(1)停等ARQ:每发送一个报文段需要等待对方ACK确认。

(2)连续ARQ:连续发送多个报文段,等待这些报文段的ACK。

(3)回退n帧ARQ:当发送方接收到接收方的状态报告指示第n个报文段出错后,回退到这个n编号的报文段,从n编号以及之后的报文段全部重新发送。

(4)选择重传ARQ:当发送方接收到接收方的状态报告指示第n个报文段出错后,回退到这个n编号的报文并重传这一个报文段,然后从刚刚截至发送的编号的报文段继续发送后续报文段。

(5)快重传:发送端只要连续收到三个重复的ACK即可断定有报文段丢失了,就立即重传丢失的报文段。

标签:协议,UDP,字节,ACK,报文,TCP,发送,拥塞
From: https://blog.csdn.net/b123321888/article/details/143174316

相关文章

  • USB协议详解第19讲(USB包-包的组成及分类)
    1.包的组成下面这张图为包的组成结构,由SOP、SYNC、PacketContent、EOP四部分组成,其中PacketContent最为核心,PacketContent由PID、地址、帧号、数据、CRC组成。1.SOP域(StartOfPacket)通过将D+和D-线从空闲状态驱动到相反的逻辑电平(K状态),由始发端口发信号通知分组的开始(SOP......
  • webSocket协议
    websocket是什么了解websocket之前首先要说一下HTTP。首先我们想象一下大部分的用户在操作网页时,用户在页面上点击一下按钮前端会给后台服务器发送一次HTTP请求,后台返回一次HTTP响应。但是这种方式的前提都是用户自己请求(点击页面)的方式太被动了,而且只有在请求之后服务器才会......
  • 如何设计一个通信协议
    1.网络层次1.1具体层次以及封装封装的协议结构一般是协议头+数据。2.网络通信存在问题2.1设计协议时,边界问题如何处理场景以及问题:在TCP流式传输中,流式传输也就是一端只关心向管道发送数据,另外一边只要管道存在数据就接收数据。一个客户端发送N个100字节的消息,此时服......
  • 为什么在http协议中使用base64编码方式传输二进制文件
    相关:图解Base64实现原理并使用js实现一个简单的Base64编码器常用加密方法之Base64编解码及代码实现一直都知道在http协议中使用base64的方式传递二进制文件,虽然感觉不理解,但是也都从来没有探究过原因,今天突然看到这方面的资料,这才有了一些理解。PS:把带有图片的网页......
  • 第二十九篇:图解TCP三次握手,看过不会忘,从底层说清楚,TCP系列四
    ⼀开始,客户端和服务端都处于CLOSED状态。先是服务端主动监听某个端⼝,处于LISTEN状态。接下来这部分内容的介绍将影响你能不能彻底理解了TCP的三次握手。一、划重点:只有服务端启动了端口监听,客户端TCP握手才能建立连接,那么服务端启动的时候都做了哪些工作呢?1.服务端创......
  • 第三十篇:TCP连接断开过程,从底层说明白,TCP系列五
    上一篇《》说了TCP的三次握手,接下来我将讲解TCP四次挥手。既然有连接就有断开,谈到这里,有的同学可能会想,不就是TCP的断开吗?简单,四次挥手解决问题,只要了解了四次的挥手过程就掌握了TCP的断开,我只能说:同学,tooyoung,toosimple;且让我提出几个问题去思考:连接断开是谁先发起的?如果......
  • 海康设备视频平台/视频流协议在EasyCVR私有化视频平台中的应用
    EasyCVR平台凭借其标准化、兼容强、应用全面的特点,在能源、交通、公安、金融、教育等行业领域得到了广泛应用。平台支持多品牌、多协议视频设备及各类视频平台资源的接入,实现了视频资源的大规模汇聚和融合应用。通过云端预览、录像、管理等一系列视频服务功能,平台为各行业视频应用......
  • 安全见闻-通信协议安全
    目录通讯协议的安全问题1.保密性问题2.完整性问题3.⾝份验证问题4.可⽤性问题5.协议实现问题6.协议设计缺陷7.移动通讯协议安全问题8.物联⽹通讯协议安全问题9.⼯业控制系统通讯协议安全问题结语:泷羽sec:安全见闻(6)_哔哩哔哩_bilibili安全见闻(6)_哔哩哔哩_bilibi......
  • 【Javaee】网络编程-TCP Socket
    前言前文中我们介绍了UDPSocket相关的构造方法和方法,并实现了UDP的回显服务器和客户端。本篇将介绍TCPSocket,并使用TCPSocketapi实现服务器和客户端的通信一.TCPSocket的常见方法1.ServerSocketServerSocket是创建TCP服务端Socket的API1)ServerSocket构造方法方......
  • 九,网络编程UDP和TCP
    Java网络编程详解:从基础到实践网络编程是现代软件开发中不可或缺的一部分。在Java中,我们可以通过多种方式实现网络通信,其中最常用的是UDP和TCP协议。本文将详细介绍Java网络编程的基础知识、UDP和TCP编程的核心概念和实现方法。网络编程概述计算机网络定义计算机网络是指将地......