[计算机网络/以太网] 计算机网络之计算机网络概述
概述
计算机网络的基础概念
OSI参考模型与TCP/IP协议族

OSI参考模型与TCP/IP协议族


TCP/IP网络协议组的称呼

- TCP/IP网络协议组的称呼
- 应用层
HTTP 报文
- 传输层
TCP 报文段(Segment)格式
UDP 数据报(Datagram)格式
- 网络层
IP 分组(Packet)格式
- 数据链路层
ARP 数据包 格式
以太网 帧格式(Frame)
https://blog.csdn.net/Hongwei_1990/article/details/105942164
以太网:作用在物理层与数据链路层的计算机局域网通信标准
-
以太网是一种计算机局域网技术,也是随机接入技术的一种,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是普遍应用的局域网技术,逐渐取代了其他局域网技术如令牌环、FDDI 和 ARCNET。
-
以太网是美国施乐(
Xerox)公司的Palo Alto研究中心(PARC)于1975年研制成功的。
当时以太网是一种基带总线局域网,数据率为
2.94Mbit/s。
- 以太网用无源电缆作为总线来传送数据帧,并以曾经在历史上表示传播电磁波的以太(
Ether)来命名。
数据链路层
以太网帧/Frame
帧格式


- 前导字段:接收器电路用它确定一个帧的到达时间,并确定编码位(称为时钟恢复)之间的时间量。
- 以太网是一个异步的局域网(即每个以太网接口卡中不保持精确的时钟同步),从一个接口到另一个接口的编码位之间的间隔可能不同。
- 前导是一个公认的模式(典型值为0xAA),在发现帧起始分隔符(SFD)时,接收器使用它“恢复时钟”。
- SFD的固定值0xAB。
- 基本帧格式:包括48位(6字节)的目的地址(DST)和源地址(SRC)字段。
- 源地址后面的类型字段,用于确定头部后面的数据类型。
- TCP/IP网络使用的常见值包括IPv4(0x0800)、IPv6(0x86DD)和ARP(0x0806)。
- 0x8100表示一个Q标签帧(可携带一个“虚拟局域网”或802.1q标准的VLAN ID)。
- 一个以太网帧的基本大小是1518字节,最近的标准将该值扩大到2000字节。
前导码(Preamble)
为了实现底层数据的正确阐述,物理层使用7个字节同步码(7 个 0x55),二进制表现为 0 和 1 交替,其作用是使发送方和接收方的时钟同步。
帧起始界定符(SFD,Start Frame Delimiter)
使用 1 个字节的SFD(0xd5),二进制表现为“10101011”,用来表示一帧的开始,即后面紧跟着传输的就是以太网的帧头。
以太网帧头
udp 报文 | demo


目的MAC地址
即接收端物理MAC地址,占用 6 个字节。MAC地址从应用上可分为单播地址、组播地址和广播地址。
- 单播地址:第一个字节的最低位为0,比如00-00-00-11-11-11,一般用于标志唯一的设备;
- 组播地址:第一个字节的最低位为1,比如01-00-00-11-11-11,一般用于标志同属一组的多个设备;
- 广播地址:所有48bit全为1,即FF-FF-FF-FF-FF-FF,它用于标志同一网段中的所有设备。
源MAC地址
即发送端物理MAC地址,占用6个字节。
长度/类型
长度/类型具有两个意义
- 当这两个字节的值小于1536(十六进制为0x0600)时,代表该以太网中数据段的长度;
- 如果这两个字节的值大于1536,则表示该以太网中的数据属于哪个上层协议,例如0x0800代表IP协议(网际协议)、0x0806代表ARP协议(地址解析协议)等。
数据段
-
长度最小46个字节,最大1500个字节。
-
长度最小46个字节,总的以太网帧长度最小为 64 个字节,其原因是因为以太网是不可靠的,这意味着它并不知道对方有没有收到自己发出的数据包,但如果他发出的数据包发生错误,需要进行重传。
以太网的错误主要是发生碰撞,碰撞是指两台机器同时监听到网络是空闲的,同时发送数据就会发生碰撞,碰撞对于以太网来说是正常的。
要保证以太网的重传,必须保证收到碰撞信号的时候数据包没有传完,要实现这一要求,发送方和接收方之间的距离很关键,也就是说信号在发送方和接收方之间传输的来回时间必须控制在一定范围之内。
IEEE 定义了这个标准,一个碰撞域内最远的两台机器之间的 round-trip time 要小于 512 bit time(传输一个比特需要的时间),这也是我们常说的一个碰撞域的直径。
512 个 bit time 也就是 64 字节的传输时间,如果以太网数据包 ≥ 64 个字节就能保证碰撞信号到达发送方的时候,数据包还没有传完。
最小数据帧的设计和以太网电缆长度有关,为的是让两个相距最远的站点能够感知到双方的数据发生了碰撞,最远两端数据的往返时间就是【争用期】,【以太网的争用期】是 51.2 us,正好发送 64byte 数据。
- 最大值 1500 称为以太网的最大传输单元(MTU,Maximum Transmission Unit),之所以限制最大传输单元是因为在多个计算机的数据帧排队等待传输时,如果某个数据帧太大的话,那么其它数据帧等待的时间就会加长,导致体验变差。
另外还要考虑网络I/O控制器缓存区资源以及网络最大的承载能力等因素,因此【最大传输单元】是由各种综合因素决定的。
为了避免增加额外的配置,通常以太网的【有效数据字段】小于1500个字节,现在电脑的配置都很高了,很多都支持【巨型帧】,【巨型帧】可以超过 1500 个字节。
- 不同的协议,数据段的组成结构不同,后面再详细说明。
帧检验序列(FCS,Frame Check Sequence)
为了确保数据的正确传输,在数据的尾部加入了4个字节的循环冗余校验码(CRC校验)来检测数据是否传输错误。
CRC数据校验从以太网帧头开始即不包含前导码和帧起始界定符。
通用的CRC标准有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统中应用最广泛的是CRC-32标准。
帧间隙(IFG,Interpacket Gap)
- 帧间隙的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备的时间。
IFG的最小值是96 bit time,即在媒介中发送96位原始数据所需要的时间,在不同媒介中IFG的最小值是不一样的。
- 不管10M/100M/1000M的以太网,两帧之间最少要有96bit time,IFG的最少间隔时间计算方法如下:
10Mbit/s最小时间为:96100ns = 9600ns;
100Mbit/s最小时间为:9610ns = 960ns;
1000Mbit/s最小时间为:96*1ns = 96ns;
ARP 数据报
-
ARP协议(Address Resolution Protocol)最初在1982年的RFC 826中提出,随着时间的推移,IETF(互联网工程任务组)对其做了许多改进,扩充协议的定义,增加了逆向地址解析、反向地址解析等协议。
-
ARP应用于IPv4中网络设备的通信,但在IPv6中使用NDP(邻居发现协议,Neighbor Discovery Protocol)替代了ARP,除了包含了ARP的功能,还通过ICMPv6实现更多能力,如路由器发现、地址自动配置等,支持多种数据链路层协议,使用组播和单播提高效率。
-
此外,ARP易受欺骗攻击,缺乏验证机制,例如可以伪造应答进行攻击。此外,大量的恶意请求也可致ARP缓存溢出。
-
ARP 地址解析协议,即 ARP(Address Resolution Protocol),根据 IP 地址获取物理地址。
主机发送包含目的 IP 地址的 ARP 请求广播(MAC 地址为 48’hff_ff_ff_ff_ff_ff)到网络上的主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后将 IP 地址和物理地址保存到缓存中,
并保留一段时间,下次请求时直接查询 ARP 缓存以节约资源。
下图为 ARP 数据报格式 。


网络层
IP数据报/Packet


IP数据包 | Demo

IP 首部
- 版本 :4位IP版本号(Version),这个值设置为二进制的 “0100” 时表示 IPv4,设置为 “0110” 时表示 IPv6,目前使用比较多的IP协议版本号是 4
- 首部长度 : 4位首部长度(IHL,Internet Header Length),表示IP首部一共有多少个 32bits(4个字节)。最大可表示15个 32 bits,因此 IP 的首部长度最大值为 60 字节
- 服务类型 :8位服务类型(TOS,Type of service),该字段被划分成两个子字段:3位优先级字段(现在已经基本忽略掉了)和4位TOS字段,最后一位固定为0。服务类型为0时表示一般服务
- 总长度 :16位IP数据报总长度(Total Length),包括IP首部和IP数据部分,以字节为单位。我们利用IP首部长度和IP数据报总长度,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16bit,所以IP数据报最长可达65535字节。尽管理论上可以传输长达65535字节的IP数据报,但实际上还要考虑网络的最大承载能力等因素
- 标识 :16位标识(Identification)字段,用来标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1
- 标志 :3位标志(Flags)字段
- 最高位为保留位
- 中间位是 DF (Don’t Fragment),表示禁止分片,只有 DF = 0 时才允许分片
- 最低位是 MF (More Fragment),MF = 1 表示后面还有分片,MF = 0 表示最后一个分片
-
片偏移 :13位片偏移字段,指较长的分组在分片后某片在原分组中的相对位置,以 8 字节为偏移单位,也就是说每个分片的长度一定是 8 字节的整数倍
-
生存时间 :8位生存时间字段TTL(Time To Live),设置了数据报可以经过的最多路由器数,表示数据报在网络上生存多久,防止丢失的数据包在无休止的传播TTL的初始值由源主机设置,一般为32、64或者128,一旦经过一个路由器,它的值就减 1,减到 0 时,数据报就丢弃,并发送 ICMP 消息通知源主机
-
协议 :8位协议(Protocol)类型,指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程。 0x01 表示为 ICMP 协议, 0x02 表示为 IGMP 协议, 0x06 表示为 TCP 协议, 0x11 表示为 UDP 协议
-
首部校验和 :16位首部校验和(Header Checksum),该字段只校验数据报的首部,不包含数据部分;校验IP数据报头部是否被破坏、篡改和丢失等。
-
源 IP 地址 :32位源IP地址(Source Address),即发送端的IP地址,如192.168.1.123
-
目的 IP 地址 :32位目的IP地址(Destination Address),即接收端的IP地址,如192.168.1.102
-
可选字段 :是数据报中的一个可变长度的可选信息,选项字段以32bit为界,不足时插入值为0的填充字节,保证IP首部始终是32bit的整数倍,没有的话长度可以为 0 。
-
IP首部校验和的计算方法:
1、将16位检验和字段置为0,然后将IP首部按照16位分成多个单元;
2、对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位);
3、此时仍然可能出现进位的情况,将得到的和再次分成高16位和低16位进行累加;
4、最后将得到的和的反码填入校验和字段。

传输层
-
数据是可以直接封装在
IP协议里而不使用TCP、UDP或者其它上层协议的。 -
然而,在网络传输中同一IP服务器需要提供各种不同的服务,各种不同的服务类型是使用端口号来区分的,例如用于浏览网页服务的80端口,用于FTP(文件传输协议)服务的21端口等。
-
TCP和UDP都使用两个字节的端口号,理论上可以表示的范围为0~65535,足够满足各种不同的服务类型。
-
TCP协议与UDP协议作为传输层最常用的两种传输协议,这两种协议都是使用IP作为网络层协议进行传输。下面是TCP协议与UDP协议的区别:
①TCP协议面向连接,是流传输协议,通过连接发送数据,而UDP协议传输不需要连接,是数据报协议;
②TCP为可靠传输协议,而UDP为不可靠传输协议。即TCP协议可以保证数据的完整和有序,而UDP不能保证;
③UDP由于不需要连接,故传输速度比TCP快,且占用资源比TCP少;
④TCP协议常用在对数据文件完整性较高的一些场景中,如文件传输等。UDP协议常用于对通讯速度有较高要求或者传输数据较少时,如视频直播和QQ等。
UDP 数据报/Datagram

demo

- 字段释义
- 源端口号 :16位发送端端口号,用于区分不同服务的端口,端口号的范围从0到65535
- 目的端口号 :16位接收端端口号
- UDP 长度 :16位UDP长度,包含UDP首部长度 + 数据长度,单位是字节
- UDP 校验和:16位UDP校验和。
UDP计算校验和的方法和计算IP数据报首部校验和的方法相似,但不同的是IP数据报的校验和只检验IP数据报的首部,而UDP校验和包含三个部分:UDP 伪首部,UDP 首部和 UDP 的数据部分。
伪首部的数据是从IP数据报头和UDP数据报头获取的,包括源IP地址,目的IP地址,协议类型和UDP长度
- UDP 协议使用报头中的校验值来保证数据的安全。
校验值首先在数据发送方通过特殊的算法 计算得出,在传递到接收方之后,还需要再重新计算。
如果某个数据报在传输过程中被第三方篡 改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此 UDP 协议可以检测是否出错。
虽然 UDP 提供有错误检测,但检测到错误时,只是简单地把损坏的消息段扔掉,或者给应用程序提供警告信息。
TCP报文/Segement

//todo
ICMP 报文
-
ICMP 是 TCP/IP 协议族的一个 IP 层子协议,包含在 IP 数据报里,用于 IP 主机、路由器之间传递控制消息。
-
控制消息是指网络是否连通,主机是否可达等功能。
其中
ping功能采用回送请求和回答报文,回送请求报文类型为 0x08,回答报文类型为 0x00

todo 以太网帧格式
https://blog.csdn.net/qq_38695100/article/details/136520654
Y FAQ
Q: 有源电缆与无源电缆的区别?
- 有源电缆与无源电缆的主要区别在于其工作原理、传输特性、应用场景以及价格等方面。
工作原理
- 有源电缆:能够主动产生电场、磁场或电流,通过内部的电源主动传输信号。
- 无源电缆:不具备自身的能量源,只能被动地传输信号,依赖外部信号源进行工作。
传输特性
- 有源电缆:适用于需要主动产生信号的场合,如音频信号的放大器和显示器的高清输出。
例如:DAC/AOC/AEC电缆。
IT和数据中心需高速可靠连接,DAC、AOC、AEC三种电缆各有优势。DAC适合短距高效,AOC擅长长距高速,AEC提供中距平衡。选择时需考虑距离、速度、成本和环境因素。
以DAC为例:
- 无源 DAC:依靠主机设备的电力,支持短距离(最长 7 米)。
- 有源 DAC:在收发器中包含信号处理电子设备以提高信号质量,允许更长的覆盖范围(最长 15 米)。
- 速度:通常支持 10 Gbps、25 Gbps、40 Gbps、100 Gbps 及更高的数据速率。
- 无源电缆:常用于传输信号,如网线、HDMI线等,适用于短距离布线。
应用场景
- 有源电缆:广泛应用于音视频领域,如HDMI线、DVI-D线、VGA线等,也用于网络领域提供高速传输和远距离传输。
- 无源电缆:包括网线、电视线、显卡数据线、音频线等,广泛用于办公和家庭网络连接。
价格
- 有源电缆:由于需要内部元器件支持,价格相对较高。
- 无源电缆:不需要内部元器件,价格较为便宜。
参考文献
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号