热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TCP,UDP,IP,数据链路层头部详解

UDP头部可以看到UDP头部由(源端口)、(目的端口)、(长度)跟(校验和)组成,总共8字节。源端口:发送方的端口号,16位,

UDP头部



可以看到UDP头部由(源端口)、(目的端口)、(长度)跟(校验和)组成,总共8字节。

源端口:发送方的端口号,16位,即2字节。
目的端口:接收方的端口号,16位,即2字节。
长度:头部+数据的字节数,16位,即2字节。
校验和:此字段用来校验数据是否出错。



UDP最小长度:即无数据的情况下,仅首部长度8字节。
UDP数据部分最小长度:即无数据的情况下,0字节。
UDP最大长度:因长度字段16位限制,所以最大长度为216-1=65535字节。
UDP数据部分最大长度:即UDP最大长度-IP最小头部-UDP头部,216-1-20-8=65507字节



TCP头部



TCP为保证数据的可靠传输,自然多了很多东西。



源端口:16位,2字节。
目的端口:16位,2字节。
序号:此报文的序号[1],可用于确认。
确认号:用于确认序号[1]
数据偏移:

数据部分往后偏移,这是TCP的头部长度字段,代表有多少个32bit,即1代表32bit,2代表64bit。
一共4位最大为15,15×32=480b=60B。所以头部最大为60个字节,最小为20字节。
(此字段与图中选项字段相关联)

接下来是保留字段,未使用。
下面是6位用于TCP通信的字段,相应位置1表示特殊的信号。比如典型的SYN、FIN和ACK用于三次握手和四次挥手[2]
窗口:用于拥塞控制,接收方可以控制发送方发送数据报文的吞吐量,防止自己太忙来不及接收。
校验和:此字段用来校验数据是否出错。
紧急指针:用于发送紧急数据的情况。
选项与填充:

TCP头部的长度可以变化,因此可以承载更多的数据。
注意这里必须使用32位的数据,用来快速定位数据部分的位置,所以没有那么多数据的话需要在后面进行填充。
这里与数据偏移字段相关联,这样就可以知道头部的长度以及数据部分的准确位置。



[1]:关于序号和确认号,不是简简单单为数据随意编号,确认号也不是确认数据报文的序号。可以点击这里看我关于TCP序号和确认号的博客
[2]:关于三次握手和四次挥手的细节,可以点击这里看我关于三次握手和四次挥手的博客



IP头部


版本:IP的版本,IPv4或IPv6,4bit。
首部长度:跟TCP头部中的数据偏移意义一致。
区分服务:这是Tos字段,用于Oos服务质量中,这个一两句话也说不完。
总长度:顾名思义,指整个数据报的长度(以字节为单位)。占16bit,最大长度为65535字节。
标识:用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。
标志:占3比特。标志一份数据报是否要求分段。详细可以看这里:https://blog.csdn.net/NetRookieX/article/details/80640383
片偏移:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。
生存时间:即TTL。可用于防止环路占用带宽,每经过一跳路由器则TTL减1,减为0则丢弃数据包。
协议:标识了上层所使用的协议01 ICMP02 IGMP06 TCP17 UDP88 IGRP89 OSPF
首部校验和:用来做IP头部的正确性检测,但不包含数据部分。 因为每个路由器要改变TTL的值,所以路由器会为每个通过的数据包重新计算这个值。
源地址:发送方的IP地址
目的地址:接收方的目的地址
可选字段与填充:与TCP中选项与字段意义一致。

数据链路层头部


这里指出图中缺点:CRC应改为FCS,FCS才是字段,CRC为校验方式。

目的地址:接收方MAC地址,因为此地址是局部链路地址,局域网中所有设备都需查看是否发送给自己,所以排在第一位。
源地址:发送方MAC地址。
长度/类型:指定长度/指定网络层所用的协议类型,通常是IP协议,0x0800。
接下来是数据部分,注意:如果有LLC子层,那么LLC子层占用的是数据部分的空间

最小帧:64字节,这是根据CSMA/CD的标准推导出。
帧头部:14字节,6字节目的地址+6字节源地址+2字节长度/类型=14字节。
帧中最小数据:64字节-6字节目的地址-6字节源地址-2字节长度/类型-4字节FCS字段(CRC)=46字节。
最大数据:即MTU=1500字节。
最大帧:MTU+帧头部14字节+FCS4字节=1518字节。
以上均未考虑前导码。





推荐阅读
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • EIGRP增强内部网关路由协议协议号88IGRPEIGRP都是CISCO的私有协议.---高级距离矢量协议1、是唯一的一种LSDV的混合协议2、EIGRP拥有目前最快的网络路由收敛 ... [详细]
  • 三层交换机的原理和设计
    三层交换机的原理和设计1.引言传统路由器在网络中起到隔离网络、隔离广播、路由转发以及防火墙的作业,并且随着网络的不断发展,路由器的负荷也在迅速增长。其中一个重要原因是出于安全和管理方便等方 ... [详细]
  • IT运维管理困境
    四大利器帮你走出IT运维管理的困境2008-10-0717:27:05标签:IT运维管理网络拓扑图   [推送到技术圈]最近给客户做咨询时,跟行业客户谈 ... [详细]
  • DDOSDDOS的中文名叫分布式拒绝服务***,俗称洪水***DDoS***概念DoS的***方式有很多种,最基本的DoS***就是利用合理的服务请求来 ... [详细]
  • 42VERSE & 圆圈徽章,Web3 社交的流派之争——针对两个国内案例的调研
    01 行业分析本文所研究的细分赛道为:Web3应用层——社交与内容场景——DID/创新场景(以元宇宙3D空间为 ... [详细]
  • 利用ipv6技术,废旧笔记本变成server
    如果你家的路由器已经get到了ipv6地址,并且你家的电脑也获取了有效的ipv6地址,在广域网的设备可以访问到。那恭喜你,再配合我这个dd ... [详细]
  • MSFC进行路由决策,PFC完成三层交换。如果没有MSFC那么交换机就只能依靠pfc完成一些ACL,数据包分类的工作,而且是可以基于三到七 ... [详细]
  • 这是一份详细 & 清晰的计算机网络基础 学习指南
    前言计算机网络基础该是程序猿需掌握的知识,但往往会被忽略今天,我将献上一份详细&清晰的计算机网络基础学习指南,涵盖TCPUDP协议、Http协议、Socket等,希望你们会喜欢。目 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • UDP千兆以太网FPGA_verilog实现(四、代码前期准备UDP和IP协议构建)
    UDP:userDatagramprotocol用户数据报协议无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC76 ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
  • Ansem 最新雄文:软着陆后,加密市场下阶段趋势与核心叙事
    市场最糟糕的时候已经过去,以太坊合并前不太会看到新的低点;但仍需来自关注宏观市场的不确定风险。撰文:Ansem ... [详细]
  • IP、ARP、TCP、UDP、ICMP、DNS、路由协议、DHCP协议的缺陷,容易受到的攻击,以及防御措施1、IP协议1.1、介绍: ... [详细]
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
author-avatar
矮辛楚楚拉_760
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有