当前位置: 首页 > article >正文

传输层协议——TCP、UDP

一、TCP(Transmission Control Protocol)

1、传输控制协议(Transmission Control Protocol,TCP):一种可靠的、面向连接的字节流服务。

1.1建立连接:源主机在传送数据前,先和目标主机建立连接。

1.2传输数据:在连接上,被编号的数据段按序收发,同时对每个数据段进行确认。如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段。

1.3释放连接:数据传输完成,和目标主机断开连接。

2、TCP的三种机制:

2.1使用序号对数据报进行标记:便于TCP接收服务在向高层传递数据之前调整失序的数据包。

2.2TCP使用确认、校验和定时器系统提供可靠性:当接收者按照顺序识别出数据报未能到达或发生错误时,接收者将通知发送者;当接收者在特定时间没有发送确认信息时,发送者认为发送的数据包并没有到达接收方,会考虑重传数据。

2.3TCP使用窗口机制调整数据流量:减少因接收方缓冲区满而造成丢失数据报文的可能性。

3、TCP报文格式

3.1源端口(Source Port)、目的端口(Destination Port):各16位,通过使用端口来标识源端和目标端的应用进程。(0~65535)

3.2发送顺序号(Sequence Number):32位,序号值是进行mod 2^{32}运算的值。取值范围(0,2^{32}-1)

3.3接收顺序号(Acknowledgement Number):32位,收到下一个报文段的第一个数据字段的顺序号。

【接收顺序号为N,表示N-1之前的数据都正确收到。】

3.4偏置值(Header Length):又称报头长度,4位。没有任何选项字段的TCP头部长度为20字节,最多可以有60字节。

3.5保留字段(Reserved):6位,通常为0

3.6标记(Flag):6位

URG——紧急,需要尽快传送
ACK——确认,建立连接后的报文回应,ACK设置为1
PSH——推送,接收方应该尽快将这个报文段交给上层协议,无需等缓存满
RST——复位,重新连接
SYN——同步,发起连接
FIN——终止,释放连接

3.7窗口大小(Windows Size):16位,用来进行流量控制,单位:字节。

3.8校验和(CheckSum):16位,对整个TCP报文段(TCP头部+TCP数据)进行校验和计算,
目标端进行验证。

3.9紧急指针(Urgent Pointer):16位,偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

3.10任选项(Option):0~40字节。保证报头长度是32位的倍数(不足填充0)。【窗口扩大因子、时间戳等选项】

4、TCP建立、释放连接

二、UDP(User Datagram Protocol)

1、用户数据报协议(User Datagram Protocol,UDP):一种不可靠的、无连接的数据报服务。源主机在传送数据前不需要和目标主机建立连接,数据附加了源端口号和目标端口号等UDP报头字
段后直接发往目的主机。

2、UDP报文格式

2.1源端口(Source Port)、目的端口(Destination Port):各16位,通过使用端口来标识源端和目标端的应用进程。

2.2长度:16位,标明UDP头部和UDP数据的总长度字节。

2.3校验和(CheckSum):16位,对UDP头部和UDP数据进行校验,有错丢弃。

三、端口

1、协议端口号(Protocol Port Number,Port):标识目标主机进程的方法。

【TCP/IP使用16位的端口号来标识端口(0~65535)】

2、端口分为:系统端口、登记端口、客户端使用端口

2.1系统端口(0~1023)

2.2登记端口:为没有熟知端口号的应用程序使用。(1024~49151)【在IANA登记以避免重复】

2.3客户端使用端口:仅在客户进程运行时候动态使用,使用完毕后,进程会释放端口。(49152~65535)


http://www.kler.cn/news/361818.html

相关文章:

  • pandas 数据分析实战
  • js实现简单的【发布者-订阅者模式】
  • 认识一下:__asm { int 80h; LINUX - sys_fork }
  • 信息安全系统设计第七周
  • golang正则表达式的使用及举例
  • 第 2 章 ROS通信机制
  • 正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 5427(unattended-upgr)持有
  • PPT自动化:如何判断PPT中的shape类型(python-pptx中常见shape类型及其代码速查表)
  • C++进阶之路:日期类的实现、const成员(类与对象_中篇)
  • 基于SSM+小程序的就业管理系统(就业1)
  • 玩转springboot之springboot异步执行
  • 2024年第四期丨全国数字人才技能提升师资培训班
  • 苍穹外卖学习笔记(二十六)
  • 卸载 Git
  • UniAD本地测试(使用docker搭建训练环境)
  • 【高分论文密码】AI赋能大尺度空间模拟与不确定性分析及数字制图
  • 基于Dijkstra智能车轨迹跟踪技术研究
  • docker 总结
  • Nixiesearch 混合搜索引擎:结合文本与语义搜索的创新
  • 海洋CMS源码
  • 三、语法分析,《编译原理》(本科教学版),第2版
  • 20 Shell Script输入与输出
  • 基于STM32设计的智能婴儿床(华为云IOT)(244)
  • 代码随想录 -- 贪心 -- 合并区间
  • 【ubuntu18.04】ubuntu18.04升级cmake-3.29.8及还原系统自带cmake操作说明
  • 计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了