[征文大赛投稿]+考了HCIE,终于明白数据在网络中是如何传输的+2020.02.10

digest [复制链接]
发表于 : 2020-2-10 14:15:40 最新回复:2020-03-07 23:53:15
903 16
niuhai211
niuhai211  精英

1 引言

学分分析抓到的数据包是创作本文最初的目的,从而形成了以数据的视角看待数通网络的思考维度。以数据的视角来看待我们的计算机网络,这可能是理解它最好的思考方式和思想主线。
本文不仅详细介绍了数据在网络中的传输过程及表现形式,并通过相应抓包实例展示这些实现,试图使抽象的概念变得触手可及,这也是创作本书努力想要达到的目的,理论和实际紧密结合,从而让理论变得易于理解。这种叙述方式贯穿全书,通过各点击破从而掌控整个数据通信网络系统全局。
如果你对抓包协议分析工具的使用有疑问,请出门右转往前走,移步到《Wireshark抓包实战》。
2 数据在网络中的传输

所有的数据对于网络来说都是业务,不同的业务数据对传输的要求不一样,就需要有不同的信令协议来满足它,不同的信令协议对数据的封装和标识提出了不同的要求,从而又产生了各种封装协议标识协议。现在就让我们从业务数据的角度来对数据通信网络做一个全面的、宏观的、高屋建瓴认识。
在数通网络模型中,每一个上层对于下层来说都是业务、是应用、是数据;每一个下层对于上层来说都是服务。下层协议通过SAPServiceAccess Point服务访问点)为上层协议提供服务,每一层对SAP的实现方式(或表现形式)都不一样。以TCP/IP模型为例,传输层使用TCPUDPSCTP协议,应用层的程序通过调用TCPUDPSCTP端口号(PortNumber)获得传输层服务;网络层使用IPv4IPv6协议,通过IP协议号(IPProtocol Number)NextHeader区分使用网络层服务的协议;网络接入层基本上是以太网的天下,以太网通过以太网类型(EthernetType)来区分使用网络接入层的协议。我们把端口号、IP协议号和以太网类型统称之为服务标志
在发送端,数据从上层到下层逐层封装,并打上它在下层注册的服务标志;在接收端,数据再从下层到上层逐层拆解,根据标记的服务标志,送给对应的上层协议去处理,这就是所谓的对等层通信。数据最终会送到应用层相应的应用程序,经应用程序解析并处理后提供给用户或做进一步处理。
数据在网络模型中的封装与拆解,如下图02-01

02-01  数据在网络各层次中的表现形式

TCP/IP网络模型中,可以简单地理解各层的功能如下:应用层是用户接口,负责用户数据数字化;传输层是数据进入网络的接口,负责将数据封装成网络Socket;互联网层提供组网与网际互联,负责数据在网络中的转发;网络接入层一方面负责为用户的联网设备提供接入网络的接口,另外一方面为网络层等上层应用提供介质无关封装,屏蔽物理硬件的差异。其实在网络接入层中还应分出一个物理层,它不仅提供物理的接口,还负责将数字数据信号化,即将数字数据转换成电、光、或载波等物理信号。
我们无法将目前垄断局域网的以太网单独归入OSI模型的数据链路层或物理层,因为它同时实现了数据链路层和物理层的功能,将其归入TCP/IP的网络接入层才更合适。
用户通过调用应用程序,产生计算机能够识别和处理的数据。
数据通过传输层Socket接口,进入网络进行传输。
互联网层在转发数据时需要先做三件事:1)计算本节点到目的节点的出口,即路由;2)对业务数据进行本层的标记封装;3)最后才是转发数据到对应的路由出口。计算路由和封装数据并没有先后顺序,但一般的情况是先计算好路由,数据来的时候直接封装并转发。
逻辑链路控制(LLCLogicalLink Control介质访问控制(MediaAccessControl一起屏蔽硬件的差异,为上层应用提供统一的访问接口,让网络层可以专心做自己的转发,而不用关心传输的介质和介质的性质特性等。不管传播介质是铜线,光纤,还是无线,不管速率是10Mbps100Mbps,还是1000Mbps,对于网络层来说,封装和转发都是同一套规则。
在网络发展的早期阶段,各设备厂家各自为政,各封装样式、封装标识和通信机制等都各不相同,组建一个网络系统只能使用一个设备厂商的产品,各个厂商的产品之间基本没有互操作性,导致同一个组织的不同部门因为采购了不同厂商的产品,部门之间天然形成部门墙,更重要的是用户还很容易被某个厂商绑定,网络系统的升级改造也是个很大的问题。
传说桑迪.勒纳(SandyLerner)和丈夫雷纳尔德.博萨科(LeonardBosack)在斯坦福大学读研和任教时相识,两人为了解决使用不同电脑及联网协议传递信息的需要,开发出了协议网关产品,后来拿到风投创立了思科系统(CISCOSystem)公司。这很显然只是一个浪漫的创业故事(Story),真实性并不足以为信。
虽然说故事归故事,但我们还是从CISCO的成功中看到了连接和联结的重要性。华为公司后来居上,在连接和联结的成本和便利性等方面更胜一筹,实现了更大规模连接,创造了更大的价值,最终也成就了更好的自己。
ICT行业天然具有垄断性。网络的规模越大,其价值越大;网络节点的连接数越多,其价值越大。无论个人或组织,都应当千方百计地想办法加入到更大的价值网络当中,并尽可能地增加自己的连接数。千万不要把自己孤立在价值网络之外。
3 面向网络的应用程序

我们把使用到网络的应用程序叫做面向网络的应用程序,或简称为网络应用程序。借助网络应用程序,我们的数据才可以在网络上进行传输。面向网络的的应用程序一方面为用户提供人机界面,将用户数据数字化,另外一方面网络应用程序通过调用Socket相关操作,进入网络进行转发。
4 TCPUDPSCTP

从传输层开始,数据才真正进入网络。传输层通过提供Socket相关操作接口,为应用程序数据提供数据进入网络的入口,并通过不同端口号区分不同的上层应用。
4.1 端口号

传输层通过TCPUDPSCTP端口号为上层应用提供服务,不同的端口与对应不同的应用或服务。所有端口号都是由IANAInternetAssigned NumbersAuthority,互联网号码分配权威)管理,该组织维护一个在线的数据库并随时更新,所有已注册端口号都会在网站上公布,链接地址如下:https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
常见的应用协议及对应端口号如表02-01
02-01常用协议及端口表
                        Service Name
               
                        Port Number                        
               
                        Transport Protocol
               
                       
ftp-data

               
                       
20

               
                       
tcp

               
                       
ftp-data

               
                       
20

               
                       
udp

               
                       
ftp-data

               
                       
20

               
                       
sctp

               
                       
ftp

               
                       
21

               
                       
tcp

               
                       
ftp

               
                       
21

               
                       
udp

               
                       
ftp

               
                       
21

               
                       
sctp

               
                       
ssh

               
                       
22

               
                       
tcp

               
                       
ssh

               
                       
22

               
                       
udp

               
                       
ssh

               
                       
22

               
                       
sctp

               
                       
telnet

               
                       
23

               
                       
tcp

               
                       
telnet

               
                       
23

               
                       
udp

               
                       
smtp

               
                       
25

               
                       
tcp

               
                       
smtp

               
                       
25

               
                       
udp

               
                       
dns

               
                       
53

               
                       
tcp

               
                       
dns

               
                       
53

               
                       
udp

               
                       
bootps

               
                       
67

               
                       
tcp

               
                       
bootps

               
                       
67

               
                       
udp

               
                       
bootpc

               
                       
68

               
                       
tcp

               
                       
bootpc

               
                       
68

               
                       
udp

               
                       
tftp

               
                       
69

               
                       
tcp

               
                       
tftp

               
                       
69

               
                       
udp

               
                       
http

               
                       
80

               
                       
tcp

               
                       
http

               
                       
80

               
                       
udp

               
                       
http

               
                       
80

               
                       
sctp

               
                       
pop2

               
                       
110

               
                       
tcp

               
                       
pop2

               
                       
110

               
                       
udp

               
                       
pop3

               
                       
110

               
                       
tcp

               
                       
pop3

               
                       
110

               
                       
udp

               
                       
sftp

               
                       
115

               
                       
tcp

               
                       
sftp

               
                       
115

               
                       
udp

               
                       
ntp

               
                       
123

               
                       
tcp

               
                       
ntp

               
                       
123

               
                       
udp

               
                       
epmap

               
                       
135

               
                       
tcp

               
                       
epmap

               
                       
135

               
                       
udp

               
                       
profile

               
                       
136

               
                       
tcp

               
                       
profile

               
                       
136

               
                       
udp

               
                       
netbios-ns

               
                       
137

               
                       
tcp

               
                       
netbios-ns

               
                       
137

               
                       
udp

               
                       
netbios-dgm

               
                       
138

               
                       
tcp

               
                       
netbios-dgm

               
                       
138

               
                       
udp

               
                       
netbios-ssn

               
                       
139

               
                       
tcp

               
                       
netbios-ssn

               
                       
139

               
                       
udp

               
                       
imap

               
                       
143

               
                       
tcp

               
                       
imap

               
                       
143

               
                       
udp

               
                       
snmp

               
                       
161

               
                       
tcp

               
                       
snmp

               
                       
161

               
                       
udp

               
                       
snmpstrap

               
                       
162

               
                       
tcp

               
                       
snmpstrap

               
                       
162

               
                       
udp

               
                       
bgp

               
                       
179

               
                       
tcp

               
                       
bgp

               
                       
179

               
                       
udp

               
                       
bgp

               
                       
179

               
                       
sctp

               
                       
imap3

               
                       
220

               
                       
tcp

               
                       
imap3

               
                       
220

               
                       
udp

               
                       
efs

               
                       
520

               
                       
tcp

               
                       
router

               
                       
520

               
                       
udp

               
                       
ripng

               
                       
521

               
                       
tcp

               
                       
ripng

               
                       
521

               
                       
udp

               
                       
ibm-db2

               
                       
523

               
                       
tcp

               
                       
ibm-db2

               
                       
523

               
                       
udp

               
                       
ldp

               
                       
646

               
                       
tcp

               
                       
ldp

               
                       
646

               
                       
udp

               
                       
mysql

               
                       
3306

               
                       
tcp

               
                       
mysql

               
                       
3306

               
                       
udp

               
                       
bfd-control

               
                       
3784

               
                       
tcp

               
                       
bfd-control

               
                       
3784

               
                       
udp

               
                       
bfd-echo

               
                       
3786

               
                       
tcp

               
                       
bfd-echo

               
                       
3786

               
                       
udp

               
                       
postgre

               
                       
5432

               
                       
tcp

               
                       
postgre

               
                       
5432

               
                       
udp

               
TCP是面向连接的协议,在通信的双方在交互数据之前先建立起TCP连接,数据传输的可靠性比较高,因此也需要更多的标识字段,协议开销也比较大,通信效率相对UDP较低,缺省的TCP报文头长度是20Bytes。应用在需要高可靠传输场景,广域网大部应用多采用TCP传输。
UDP是无连接的协议,数据交互之前不需要建立连接,数据传输的可靠性相对TCP较差,需要的标识字段也比较少,协议开销小,通信效率高,UDP报文头长度是8Bytes。应用在需要高效传输和网络质量较好的场景,很多局域网应用都采用UDP传输。
4.2 TCP

TCPTransportControlProtocol,传输控制协议)IP协议号是6,是传输层一个面向连接的、可靠的传输协议。TCP最早在RFC761中描述,后来被RFC793被重新描述并废弃。对原著有明显偏好的同学可以移步到IETF官方网站,RFC793链接地址是:https://datatracker.ietf.org/doc/rfc793/?include_text=1
4.2.1 TCP格式

02-02TCP报头格式RFC793

TCP报头说明:
1TCP报头宽度是32位;
2SourcePort源端口,长度16位;
3DestinationPort目的端口,长度16位;
4SequenceNumber顺序号,长度32位;
5AcknowledgmentNumber确认号,长度32位;
6HLENTCP头部长度,4位长,表示TCP中包含多少个32位字;
7Reserved,保留,未使用,长度4位;
8)标志,可以是ACKPSHRSTSYNFIN,用来建立和维护TCP连接等;
9WindowSize窗口大小,表示在确认了字节之后还可以发送多少字节,长度16位;
10Checksum校验和,长度16位;
11UrgentPointer紧急指针;
12Optionsand Padding可选项,0~32字节。
TCP报头在没有添加任何选项的情况下是20Bytes,也是TCP报头的最小长度,实现中通常都是这个长度。
4.2.2 TCP报文实例

Wireshark网络协议分析工具显示的TCP报头如下图02-03
02-03Wireshark网络协议分析工具显示的TCP报头

4.2.3 滑动窗口

TCP协议的流量控制是用窗口机制实现的。在接收端,窗口大小是指本地接收缓冲区的大小;在发送端,窗口大小是指发送缓冲区的大小。窗口的大小通过滑动窗口算法在发送端和接收端进行协商。在报头字段中用16位表示,最大可表示65535,也是常见的首次协商发起大小。
4.2.4 TCP三次握手

TCP连接建立过程也叫做TCP三次握手(TCPThree Way Handshake),如下图02-04
02-04TCP三次握手

4.2.5 TCP三次握手实验

02-05TCP SYN

这是一个TCPSYN分节,从上图02-05我们可以看出如下信息:
1TCP协议的IP协议号是6
2)数据是由源地址192.168.1.2发往目的地址104.20.0.85
3)源端口是本地随机分配的一个未被占用的端口1280,目的端口是源端请求的知名端口80
4TCP的流索引号是27
5SYN序列号是0,即seq= 0
6SYN位被设置,即0x02,表示这是一个SYN
7)窗口大小为65535
02-06TCP SYN+ACK

这是一个TCPSYN + ACK分节,从上图02-06我们可以看出如下信息:

1TCP协议的IP协议号是6

2)数据是由源地址104.20.0.85发往目的地址192.168.1.2

3)源端口是一个知名端口80,目的端口是一个随机端口1280

4TCP的流索引是27,此字段可用来标识一个TCP连接;

5SYN序列号是0seq=0

6ACK序列号是1,即ack= seq + 1

7SYN位和ACK位都被设置,即0x12,表示这是一个SYN+ACK

8)窗口大小为29200

02-07TCP ACK

这是一个TCPACK分节,从上图02-07我们可以看出如下信息:
1TCP协议的协议号是6
2)数据是由源地址192.168.1.2发往目的地址104.20.0.85
3)源端口是一个随机端口1280,目的端口是一个知名端口80
4TCP的流索引是27
5ACK序列号是1,即ack= seq + 1
7ACK位被设置,0x10,表示这是一个ACK
8)窗口大小为65536
至此,流索引为27TCP连接建立成功!
4.3 UDP

UDP UserDatagramProtocol,用户数据报协议)IP协议号是17,是一个无连接的,尽力而为的传输协议,在数据封装和传输机制上都更加精简,相对于TCP来说传输效率更高。UDP协议在RFC768中描述,对原著有明显偏好的读者可以移步到IETF官方网站,链接地址是:https://datatracker.ietf.org/doc/rfc768/?include_text=1
4.3.1 UDP报头格式

02-08TCP报头格式RFC 768

UDP报头说明:
1UDP报头宽度是32位;
2SourcePort,源端口,长度16位;
3DestinationPort,目的端口,长度16位;
4LengthUDP分段长度,长度16位;
5Checksum,校验和,长度16位,可选字段,当不使用检验和时,此字段全部置为0
UDP报头的长度是8Bytes。因为没有什么选项,长度相对TCP比较固定。
4.3.2 UDP报文实例

Wireshark网络协议分析工具上显示的UDP报头,如图02-09所示。
02-09Wireshark网络协议分析工具显示的UDP报头



从上图02-09中我们可以看出如下信息:
1UDP协议的协议号是17
2)数据是由源地址192.168.1.2发往目的地址163.177.69.40
3)源端口是一个随机端口1028,目的端口是一个“知名”端口8000(连企鹅都知道);
4)报文的长度是178
5)报文校验和是0x627f,没有使能确认;
6)数据内容有170字节。
4.4 SCTP

SCTPStreamControl TransmissionProtocol,流控制传输协议),IP协议号132。它支持多宿主和多流,处理和传输数据的效率高;在建立关联时,服务端不保存状态,不占用服务端系统资源,天然具有抗DoSDenialofService,拒绝服务)攻击能力;它唯一不好的地方就是提供乱序消息服务的同时没有处理好数据乱序的问题。SCTP目前应用相对较少,随着将来网络传输数据量的增加和安全性的需要,有望得到广泛应用。SCTPRFC4960中描述,链接地址如下:IPInternetProtocol,互联网协议)是互联网层最重要的一个协议,根据发展阶段不同,有两个版,分别是IPv4InternetProtocol Version 4)和IPv6InternetProtocol Version4)。IPv4提供32位地址空间,IPv6提供128地址空间。联网设备数的增加是大概率事件,IPv6的普及也是大概率事件,现在正处在转折点上。
IP是一个标识协议,提供了两项非常重要的功能:寻址和破碎。寻址包括编址和把互联网数据报从源地址转发到目的地址;破碎就是把大块的上层应用数据分割并打包成能在网络上传输的小块,并在接收端把他们重组IP被设计用在包交换计算机网络互联通讯系统中。
5.1 IPv4

IPv4InternetProtocol Version4,互联网协议版本4),以太网类型是0x0800。互联网协议为在不同的互联系统中的主机提供主机到主机的数据报服务。InternetProtocol最早在RFC760中定义,后来被RFC791重新描述并废弃,对原著有明显偏好的同学可以移步到IETF官方网站,RFC791链接地址是:<a href="https://datatracker.ietf.org/doc/rfc791/?include_text=1">https://datatracker.ietf.org/doc/rfc791/?include_text=1
5.1.1 IP协议号

IPv4通过协议号为上层应用提供服务,不同的应用对应不同的IP协议号,号码也是由IANA管理,在线数据库地址是:https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml#protocol-numbers-1
常见的应用协议及对应协议号如表02-02
02-02常用IP协议号及对应协议表
                        号码
               
                        协议缩写
               
                        协议名
               
                       
               
                        ICMP
               
                        Internet Control Message
               
                        2
               
                        IGMP
               
                        Internet Group Management
               
                        4
               
                        IPv4
               
                        IPv4 encapsulation Stream
               
                        6
               
                        TCP
               
                        Transmission Control Protocol
               
                        17
               
                        UDP
               
                        User Datagram Protocol
               
                        88
               
                        EIGRP
               
                        Enhanced Interior Gateway                        Routing Protocol
               
                        89
               
                        OSPF
               
                        Open Shortest Path First
               
                        103
               
                        PIM
               
                        Protocol Independent Multicast
               
                        112
               
                        VRRP
               
                        Virtual Router Redundancy                        Protocol
               
                        115
               
                        L2TP
               
                        Layer Two Tunneling Protocol
               
                        124
               
                        ISIS over IPv4
               
                        ISIS over IPv4
               
                        132
               
                        SCTP
               
                        Stream Control Transmission                        Protocol
               
                        134
               
                        RSVP-E2E-IGNORE
               
                        RSVP-E2E-IGNORE
               
                        137
               
                        MPLS-in-IP
               
                        MPLS-in-IP
               



5.1.2 IPv4报头格式

02-10IP报头格式,rfc791

IPv4报头结构解释如下:
1Version版本,4位,0x0100表示是IPv4
2IHL头长度,4位,表示32位字长的报文长度,缺省长度20Bytes,也是IP报头的最小长度;
3Typeof Service 服务类型,8位,用于实现QoS
4TotalLength 总长度,16位,包括数据和报头在内的总长,以字节计;
5Identification标示,16位,标识一个数据包,与分片偏移字段一起使用,用来标识被分段的数据包。例如,当一个数据包的大小超网络传输的MTU时,被分片的数据包会打上同一标识;
6Flags标记,3位,表示是否可以对数据包分段,如果设置为对大包不分段,可以用来测试网络中MTU的大小;
7FragmentOffset 片偏移/分段偏移,13位,以8位组为单位,用来标示分段起始点相对于报头起始点的偏移量;
8Timeto Live生存时间,8位,在UNIX系和新的Windows操作系统上,缺省是64,在多数Windows操作系统上缺省值是128,目前在绝大多数网络设备上,缺省值都是255,数据包在网络中传输时,每经过1跳就会减1,当此值为0是包丢弃;
9Protocol协议,8位,用来标示封装的上层应用,用IP协议号来表示,每一个上层协议都会对应一个协议号,如本节开头所描述;
10HeaderChecksum报头检验和,16位,报头检验和,不包含数据,发送者计算产生,接收者重新计算以校验对错,因为TTL值的变化,每一个转发者需要重新计算;
11SourceAddress 源地址,32位,发送者地址,由4个八位组构成的IP地址;
12DestinationAddress 目的地址,32位,接收者地址,由4个八位组构成的IP地址;
13Options选项,可变长度,在IP报头中是可选的,通常都没有用到;
14Padding填充,填充选项,如果选项的长度不够32位,填充字段用0补足。
有关IP地址更多详细内容请查阅本书第15章《IPIP编址》。
5.1.3 IPv4报文实例

IP报头在WireShark网络协议分析工具上的显示如下图:
02-11IPv4报头实例,访问www.ietf.org抓包

从上图我们可以看出如下信息:
1)这是一个IPv4数据包,源地址是104.20.0.85,目的地址是192.168.6.57
2)报头长度是20Byte
3)没有提供DSCPQoS(一种服务质量类型);
4)包总长度是40,单位是Bytes,是指上层数据的长度;
5)包ID0x2c25(11301)
6)数据包没有被分片;
7)当前包的TTL50
8)上层协议是TCPIP协议号是6
9)头部校验和是0xed60,头部检验和禁用;
10)因为Wireshark头部检验没有启用;
11)源地址是104.20.0.85
12)目的地址是192.168.6.57
13)源IP地理位置信息,未知;
14)目的IP地理位置信息,未知;
5.2 ARP

ARPAddressResolutionProtocol,地址解析协议。用来查询出单播目的IP地址对应的下一跳IP地址的MAC地址,然后把查询出来的这一地址封装在以太网帧的目的MAC地址。ARP协议在RFC826中描述,对原著有特别偏好的同学可以移步到IETF官方网站,链接地址是:https://datatracker.ietf.org/doc/rfc826/?include_text=1
传输层的数据段到达网络层后要封装上网络层的报头,并添加源和目的IP地址,形成数据包。数据包到达网络接入层后要封装以太网报头并添加源和目的MAC地址。源MAC地址直接封装出接口地址,目的MAC地址要如何封装呢?其实目的MAC地址封装的是目的IP地址对应的下一跳IP地址的MAC地址,有时目的IP地址可能就是下一跳地址,那是下一跳没有下一跳的情况,但如果涉及到向外网路由数据那就不是了。具体的实现有三种情况,分别是:
1)对于目的IP是广播地址,目的地址就是下一跳地址,广播IP地址(321)直接映射为广播MAC地址(481);
2)对于目的IP是组播地址,是通过将IP地址的后23位映射到组播MAC地址的后23位来实现的;
3)对于目的IP是单播IP地址,IP地址到MAC地址的映射是通过ARP来完成的。
单播IP地址才是常态,组播IP地址只有在组播协议或组播应用的网络中才有,数量也比较小,产生广播IP地址的场景主要是ARPDHCP,并以ARP为主。其实ARP产生的广播IP也是由单播地址而来。ARP表中没有MAC地址对应关系的单播地址,其与MAC的对应关系是通过ARP协议查询得到,ARP查询的目的地址是广播地址。
IP地址与MAC地址的对应关系存放在ARP表中,单播IP地址的ARP表的构建需要两个步骤,如下图:
02-12ARP请求广播发送,单播回复,收到回复,表项建立成功

1)请求者以广播形式发送ARP请求,询问目的IP地址对应的下一跳IP地址的MAC地址,同一个广播域内的设备都会接收,正常情况下只有实际的IP地址拥有者才会响应;
2)实际被请求者以单播的形式进行回复,请求者收到回复,表项建立成功,交互结束。
ARPRequest报文在Wireshark协议分析工具上的显示:
02-13 ARP请求以广播形式发送

从图02-13中我们可以看出:
1)这是一个ARP报文,其以太网类型是0x0806
2)硬件类型是以太网,Ethernet
3)协议类型是IP协议;
4)硬件大小是6
5)协议大小是4
6ARP协议的类型是请求,request(0x0001)
7)不是无故ARP(无偿ARP/免费ARP);
8)发送者的MAC地址是00:1e:65:28:2f:46
9)发送者的IP地址是192.168.6.30
10)目标MAC地址是00:00:00:00:00:00
11)目标IP地址是192.168.6.1
ARPReply报文在Wireshark协议分析工具上的显示:
02-14 ARP回复以单播形式发送

从图02-14中我们可以看出:
1)这是一个ARP报文,其以太网类型是0x0806
2)硬件类型是以太网,Ethernet
3)协议类型是IP协议;
4)硬件大小是6
5)协议大小是4
6ARP协议的类型是回复,reply(0x0002)
7)不是无故ARP(在有些文献中也被叫做无偿ARP或免费ARP);
8)发送者的MAC地址是;20:a6:80:64:a3:5d
9)发送者的IP地址是192.168.6.1
10)目标MAC地址是00:1e:65:28:2f:46
11)目标IP地址是192.168.6.30
更多有关ARP的详细内容请查阅本书本书第16章《ARP及其在生产中的应用》。
5.3 IPv6

基于计算机网络本身的魅力,再加上5GFifthGeneration)和IoTInternetofThings)技术的普及,预期未来联网设备数将大幅度增加,原来提供32位地址空间的IPv4已经不能满足现实需要,迫切需要更大的可标识地址空间。中关村在线20191127消息20191126日全球43亿个IPv4地址正式耗尽!
关于下一代互联网曾提出过很多个方案,最终IPv6胜出。IPv6可提供128位地址空间,是在IPv4经验教训的基础上提出的下一代互联网协议标准,各国政府都在全力推行,中国也不例外。
20171126日,**中央办公厅、国务院办公厅印发了《推进互联网协议第六版(IPv6)规模部署行动计划》,并发出通知,要求各地区各部门结合实际认真贯彻落实。中国政府网可查全文内容,网页链接地址如下:http://www.gov.cn/zhengce/2017-11/26/content_5242389.htm
20180503日,中国政府网又发布了工业和信息化部关于贯彻落实《推进互联网协议第六版(IPv6)规模部署行动计划的通知》,中国政府网可查全文内容,网页链接地址如下:http://www.gov.cn/xinwen/2018-05/03/content_5287654.htm
20180803日,工信部通信司召开IPv6规模部署及专项督查工作全国电视电话会议,**内容可在**中央网络安全和信息化委员全办公室及中华人民共和国国家互联网信息办公室网站可查,网页链接地址如下:http://www.cac.gov.cn/2018-08/04/c_1123220958.htm
中国人民银行,中国银行保险监督管理委员会,中国证券监督管理委员会联合发文(《银发【2018343号》),《关于金融行业贯彻《推进互联网协议第六版(IPv6)规模部署行动计划的实施意见》,《意见》对金融行业规模部署IPv6给出指导。
IPv6相关的RFC文档有:
RFC1883RFC2460RFC5095RFC5722RFC5871RFC6437RFC6564RFC6935RFC6946RFC7045RFC7112RFC8200
RFC1883InternetProtocol, Version 6 (IPv6)Specification,是IPv6的最早描述,链接地址:https://datatracker.ietf.org/doc/rfc1883/?include_text=1
RFC2460是目前对IPv6的通用描述,它废弃了RFC1883,链接地址:https://datatracker.ietf.org/doc/rfc2460/?include_text=1
IPv6的最新内容由RFC8200描述,发布于20171030日,它废弃了RFC2460[4],链接地址:https://datatracker.ietf.org/doc/rfc8200/?include_text=1
IPv6通过NextHeader来区分上层应用,在IPv4协议号的基础上增加一些IPv6特有的应用。
IPv6Forum网站消息,在全球IPv6采用和部署情况方面,中国还是比较落后的,目前排在前面的是比利时63%,德国61%,瑞士57%,美国51%,英国50%
5.3.1 IPv6特点

IPv6不仅仅是提供了更大的地址空间,同时也优化了IPv4的一些不足,其特点总结如下:
1)将地址空间从32位扩展到128位;
2)简化报头格式;
3)改进为支持扩展选项,更强的扩展能力;
4)报头中添加流标记域,方便实现服务质量;
5)扩展的安全选项,支持端到端安全;
6)分层地址结构;
7)去掉广播,添加任播;
8)移动性支持;
9)无状态自动配置。
5.3.2 IPv6报头格式

02-15IPv6报头格式

IPv6报头结构解释如下:
Version版本号,4位,0x0110,就是十进制的6,表示IPv6
TrafficClass 流分类,8位,用于服务质量。
FlowLabel流标签,20位,标识一个流。
PayloadLength 载荷长度,16位,标识负载的长度。
NextHeader下一报头,8位,标识扩展中的报文类型比如类型,可实现更多扩展功能,比如:值为43的路由头,可实现移动IPv6,类型值为51的认证头,可用于IPSec,实现端到端加密。IPv6通过可选扩展报头还可实现目前没有的功能,其值的定义与IPv4报头中的Protocol字段定义的值相同,详情请参阅RFC1700以及与之相关IANA在线文档[18]
HopLimit 跳数限制,8位,可用于限制传播范围或防环。
SourceAddress 源地址,128位。
Destination Address 目的地址,128位。
5.3.3 IPv6报文实例

02-16IPv6报头实例

从抓包实例我们可以看出如下信息:
1)这是一个IPv6数据包,EthernetType0x86dd;
2)版本号是0110,即十进制的6,表示IPv6协议;
3)流分类是0x00,未分类或缺省分类;
4)流标签是0x0000,未标记或缺省标记;
5)数据载荷长度是40,这里的单位是字节Byte
6)下一头类型(NextHeader)是58,即ICMPv6
7)跳数限制是128,即超过128个节点后数据包丢弃;
8)源地址是fe80::1001:9c37:37b3:4990
9)目的地址是fe80::b0b0:8229:80fd:757b
后面的内容就是ICMPv6相关的内容。
5.3.4 广播替代

IPv4网络最受垢病的就是广播,在IPv4中有两个用到广播的非常重要的协议分别是ARPDHCP。针对ARP的替代,IPv6中通过ICMPv6的扩展协议NDP实现的;针对DHCPIPv6中是通过DHCPv6实现的,DHCPv6继承了DHCP的基本实现思想,但是数据交互通过组播地址实现,消息的数量也由8个变成了13个。
更多有关IPv6的内容请查阅《IPv6》一节。
5.4 IP地址空间分配

IP既可以标识联网设备,也可以标识破碎后的数据。其中对联网设备的标示是通过IP地址实现的。IANA维护在其网站维护一个IP地址的分配状态库。
IPv4地址空间分配:
https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xhtml
组播IPv4地址分配:
https://www.iana.org/assignments/multicast-addresses/multicast-addresses.xhtml
特殊用途IPv4地址:
https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
IPv6地址空间分配:
https://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xhtml
IPv6全球单播地址分配:
https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xhtml
在地址空间分配上,中国一直处于劣势。
关于IP地址等更多内容,请参阅《IP地址》一节。
6 MPLS

MPLS,Multiprotocol LabelSwitching多协议标签交换。介于数据链路层与网络层之间的协议,是一个2.5层的协议,有些文献干脆就把这一层叫做MPLS层。MPLS上层可以支持IPv4IPv6IPXCLNP等,所以称之为多协议。下层可支持FrameRelayATMEthernet等多种网络类型。MPLS将上层的数据包添加4BytesMPLS报头,在MPLS域内都进行标签转发,转发效率高,出MPLS域之前会将标签弹出,从而形成了一个由MPLS构成的VPNVirtualPrivate Network,虚拟专用网)隧道MPLS层不是必须的存在,园区网基本用不到,但是在运营商环境却非常普遍。
有关MPLS比较重要的RFC有:
RFC3031MultiprotocolLabel SwitchingArchitecture,推荐标准,定义了MPLS的体系结构,链接地址:https://datatracker.ietf.org/doc/rfc3031/?include_text=1
RFRFC032MPLSLabel StackEncoding,推荐标准,定义了MPLS标签格式,链接地址:https://datatracker.ietf.org/doc/rfc3032/?include_text=1
6.1 MPLS报头格式

02-17 RFC 3032中定义的MPLS标签结构

各字段定义如下:
Label:定义标签值,长度20位;
Exp:文档中说是做实验用,但我们通常说是扩展位,用来做QoS,长度3位;
S:栈底标识,也叫栈底位,用来标识是否是标签栈底,长度1位;
TTLTimeto Live,与IPv4中的TTL功能相同,过一跳减1,到0丢弃,可用来防环,长度8位。
6.2 MPLS报文实例

通过Wireshark协议分析工具抓包并显示的MPLS报文头,如图02-18所示:
02-18MPLS报头实例

从图02-18中我们可以看出如下信息:
1)以太网中的Type值是0x8847,表示这是一个MPLS单跳报文;
2MPLS标签号是1024,是由BGP分配的动态标签;
3MPLSExp位是6,缺省对应的QoS服务类型是CS6
4)栈底标记是1,表示是标签栈底,里面没有更多标签;
5MPLSTTL值是255,表示这是第一跳MPLS路由器。
6.3 MPLS转发过程




02-19 RFC 3032中定义的MPLS标签结构

路由器的存在是依据路由选择协议RoutingProtocol)规则计算形成路由表RoutingTable),也即路由信息表RIBRoutingInformationBase),路由器对路由信息表中的下一跳地址进行迭代,最终得到一个出接口。这个接口可能是路由器上真实存在的物理接口,也有可能是虚拟的隧道接口TunnelInterface),迭代后形成的表就是转发信息表FIBForwardingInformation Base)。路由器转发数据的依据实际上是FIB。在FIB中,如果目标网段对应的TunnelID0,通过物理接口转发数据,反之则根据TunnelID的值进入相应隧道转发。
MPLS路由器上,路由器还可以根据MPLS标签值,查询入标签映射表ILMIncomingLabel Map),得到TunnelID
路由器拿目标网段对应的TunnelID,到下一跳标签转发表NHLFENextHop Label Forward Entry)中查询得到出接口。NHLFE中除了记录TunnelID对应的出接口,还记录了TunnelID对应的标签操作类型,如:压入(Push)、交换(Swap)、弹出(Pop)等。
MPLS路由器除了转发数据,还需要根据NHLFE中的记录对标签进行相应的操作。在入站MPLS路由器(Ingress节点),上层数据(如IPPacket)添加(Push操作)MPLS标签并进行标签转发;在MPLS转发路由器(Transit节点),路由器转发带标签的数据并更新(Swap操作)出入接口标签值;在出站MPLS路由器(Egress节点),路由器去掉(Pop操作)标签,数据交由上层协议(如IP)处理。
更多详细内容,请查阅本书第25章《MPLS及其应用》。
7 以太网

以太网是最为典型的网络接入层LAN实现,至今经历过两个版本,分别是EthernetEthernetII,目前的LAN网络中应用的都是以太网。
以太网是由DECIntelXerox三家公司在1982年联合发布的一个标准,后来转到由IEEE802.3委员会维护和更新,目前已经发展到100G以太网。以太网是一个包含了OSI/RM中数据链路层和网络层的内容。我们的个人计算机和服务器等机集成的网卡(NICNetworkInterface Card)一般都是以太网网卡。
以太网是局域网实事上的标准,它通过Type号为上层应用提供服务,不同的Type号对应不同的应用协议,Type号也是由IANA管理,在线数据库地址是:https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml
常见的应用协议及对应Type号如表02-03
02-03常见EthernetType号及对应协议
                        Ethernet Type(hex)
               
                        Description
               
                        0x0000~0x05DC
               
                        IEEE802.3 Length Field                        
               
                        0x0100~0x01FF
               
                        Experimental
               
                        0x0800
               
                        Internet Protocol version 4
               
                        0x0805
               
                        X.25 Level 3
               
                        0x0806
               
                        Address Resolution Protocol
               
                        0x0808
               
                        Frame Relay ARP
               
                        0x0806
               
                        Address Resolution Protocol
               
                        0x22F3
               
                        TRILL
               
                        0x22F4
               
                        L2-IS-IS
               
                        0x8100
               
                        Customer VLAN Tag Type (C-Tag,                        formerly called the Q-Tag)
               
                        0x8181
               
                        STP, HIPPI-ST
               
                        0x86DD
               
                        Internet Protocol version 6
               
                        0x8808
               
                        IEEE Std 802.3 – Ethernet
                        Passive Optical Network (EPON)
               
                        0x880B
               
                        Point-to-Point Protocol (PPP)
               
                        0x8847
               
                        MPLS
               
                        0x8848
               
                        MPLS with upstream-assigned                        label
               
                        0x8863
               
                        PPP over Ethernet (PPPoE)
                        Discovery Stage
               
                        0x8864
               
                        PPP over Ethernet (PPPoE)
                        Session Stage
               
                        0x888E
               
                        IEEE Std 802.1X – Port-based                        network access control
               
                        0x88A8
               
                        IEEE Std 802.1Q - Service VLAN                        tag identifier (S-Tag)
               
7.1 报文格式

02-20以太网II帧结构

1DestinationAddress,目的地址,6字节,接收者的物理地址,通常说的MAC地址,48位二进制位;
2SourceAddress,源地址,6字节,发送者的物理地址,48位二进制位;
3Type/Length,类型/长度,2字节,可以表示帧数据的长度或上层应用的类型,值0~1500表示长度,1536~65535表示上层应用协议的类型,比如0x0800表示是IP0x0806表示是ARP
4Data,数据,可变长度,46~1500字节;
5FCS,帧校验序列,一般是循环冗余校验,4字节,对事个数据封装的校验。
以太网II帧头长度是18Bytes,帧数据的最小长度是46Bytes,最大长度(MTUMaximumTransmission Unite,最大传输单元)是1500Bytes,整个帧的长度是64~1518Bytes。如果小于最小长度,则通过填充内容为0的八位组的方式补齐,填充内容不作为IP数据包的一部分,也不包含在包头字段的总长度当中(rfc894)。MAC子层检测到小于64bytes的帧会当作残帧丢弃。我们通常设置典型的以太网数据帧数据长度是1500Bytes,再加上报头长度18Bytes,因此以太网帧的总长度就是1518bytes,如果超过最大长度,接收端系统会阻止其它系统发送给自己,解决这个问题的办法是在发送端设置TCP的最大分片大小选项(rfc894),即大块数据在发送一开始就会被分片。
一个典型的以太网帧在WireShark协议分析工具上的显示如下图02-17
02-21典型以太网帧

从上图02-21中我们可以看到,以太网II数据帧信息:
1)源MAC地址是00:1e:65:28:2f:26
2)目的MAC地址是20:a6:80:64:a3:5d
3)封装的协议是IP0x0800);
以太网II数据帧信息已经是网络接入层LLC子层的信息了,内容已经开始包含数据层面的信息。
7.2 关于数据链路层封装的一个不成熟思考

以太网是二层局域网实事上的标准,有一统天下之能势,但是局域网本身也存在一些问题。比如:1)没有老化机制,当环路发生时,一个数据帧可以在二层网络中无限传输,直到环路消失;2)二层网络中缺少像ICMP这样的跟踪定位的工具协议,帧结构相对简单,网络问题很难定位;348位的MAC地址在未来是否依然够用?
数据链路层封装当初是怎么被设计出来的?如果没有这一层封装,又会带来什么问题?
二层网络的好处:1VLAN,有它,二层组网可以更加简单方便,成本低廉;2)数据链路层做了介质无关封装,使IP协议能够轻松应用于各种通信介质。如果IPv6发展出合适的扩展报头及处理机制,网络接入层只做硬件差异屏蔽,不做封装与转发是否可行?但是不封装又如何屏蔽差异,又如何向上提供服务呢?如果上面真能做到,数据链路层被取代也不是没有可能,IPv6交换机也不是没有可能。
MPLS及其它其它依赖以太网的技术呢?对他们将会产生什么样的影响?有什么替代的方案?
数据链路层封装到直接网络层封装如何过渡?两种封装如何共存?
7.3 MAC地址

TCP/IP将网络接入层(NetworkAccess Layer)又划分为LLCLogicalLink Control,逻辑链路控制)子层和MACMediaAccess Control,介质访问控制)子层。介质访问控制地址是最受我们关注的一个存在,它由48位构成,经常用12个十六进制位表示。
1)这是一个烧录(BurnIn)地址,一次性写入,不再更改。
2MAC地址的前24位代表一个组织,叫OUIOrganizationallyUnique Identifier 组织唯一标识符),可以通过下面的连接查询:
https://mac-oui.com/
3)后24位是流水号,所以设备的MAC地址在正常情况下是不会重复的。
MAC地址的唯一性,可以帮助我们锁定某一台设备。
MAC地址的分配也是由IANA来管理,在线数据库地址是:https://www.iana.org/assignments/ethernet-numbers/ethernet-numbers.xhtml
8 物理信号

物理层最为基础和底层,其主要功能是将数字数据信号化,另外还提供接口形式,引脚定义,电压和光强等。所有的数字都会被转换成由01组成的编码,这些编码在以电为信号的网络中由电压高低或电压变化来表示,在以光为信号的网络中由有无光或有无光变化来表示,在以电磁波为信号的网络中由载波有无和载波有无变化来表示,我们把将数字数据信号化为物理信号的过程叫做数字数据的信号化
8.1 帧物理

很多文档或教材中也会把二层以太刚帧之前的帧起始定界符前导(也叫前同步码是二进制1010101010101010 10101010 10101010 10101010 1010101010101010),甚至包括帧间隙,三者都视之为以太网帧的组成部分。这种理解也许说不上错,甚至也有其合理之处,但是更合理的理解是把它当作帧的物理信息来看待。
从上图02-21中我们可以看到,物理帧相关信息:
1)帧序号19,是指在本次抓包中的排序,仅在本次抓包中有意义;
2)接收时间是中国标准时间2016616100345303545000
3)新纪元时间1466042625.303545000秒;
4)距离上一帧捕获时间0.002398000秒;
5)距离上一帧显示时间0.002398000秒;
6)距离第一帧时间10.290923000秒;
7)帧序号19
8)帧长度106字节(848位);
9)捕获长度106字节(848位);
10)帧没有被标记;
11)帧没有被忽略;
12)着色规则名称ICMP
13)着色规则字串ICMPICMPv6
14)帧长度是106字节。
帧信基本息其实是物理层的信息,从物理世界直接得到的信息。物理层判断帧的起止是通过一串特殊的字符,其实也可以把这一串特殊的字符都看作是数据链路层帧的前导字段。
8.2 帧间隙与帧时隙

计算机设备在发送数据帧时并不是连续的,即每发送完一个帧需要等待一个时间才可以发送下一个帧,其目的是为了让接收者能够处理得过来而不至于拥塞。这个等待的时间间隔我们把它叫做帧间隔帧间隙(InterFrameGapIFG,它表示一个站点连续发送数据时,帧与帧之间的空闲时间或间隔时间,但是其量纲却不是时间(time),而是比特(bit),比如10/100Mbps以太网的帧时隙就是96Bits,它指的是96位的数据通过线路的时间。Gbps以太网帧间隙是4096Bits
帧时隙(IFSInterFrameSlot)也叫帧时槽,用来表示每一个数据帧占用的最小时间长度,比如10/100Mbps以太网的帧时隙就是512Bits,它是由最小帧数据长度46Bytes+18Bytes的帧头信息计算得来。在10/100Mbps链路上,如果512Bits时间仍然没有收到,则认为线路是空闲的,而小于512Bytes的帧则认为是残帧。
定义帧时隙是为了共享线路从而提高其利用率,此检查机制通过CSMA/CDCarrierSense Multiple Access/CollisionDetection,带冲突检测的载波侦听多路访问)实现。在10Mbps以太网中,512Bits数据传输的时间是51.2us5-4-3原则最大传输距离是2500m,而根据电磁波的传输角度来看,512Bits10Mbps以太网最大可传输2800m。在100Mbps中,512Bits的数据传输完需要5.12us,电磁波在这个时间可传输约200m。以太网传输距离的限制最主要的原因其实是基于帧间隔与帧时隙基础上的CSMA/CD,其次才是信号强度的问题。在一些通讯距离较远,而又无法添加中继设备的场景中,我们需要还到另外一个技术,叫长距离以太网(LongReachEthernetLRE,它除了将物理信号增强和提高信号检测的能力外,很重要的一点就是修改了帧间隙。因为帧间隙的修改,LRE设备都需要成对使用,否则时隙不一致就会导致冲突的产生。
9 数据传递实例

当我在浏览器的地址栏里填入http://www.ietf.org/并回车,到我看到IETF的网页,这中间发生了什么?
浏览器首先调socket()函数在本地创建一个大于1024的未被占用的随机端口,再用connect()函数与远端主机www.ietf.org80端口连接,待TCP连接建立成功后,再使用write()函数将HTTPGET进行封装,发送给www.ietf.org这台主机。
www.ietf.org这台主机如果我刚刚已经访问过,那么主机对应的IP地址就会在我的电脑上进行缓存(Windows主机可能通过ipconfig/displaydns查看),如果在缓存中没有查到,再去查询etc/hosts文件,文件中也没有查到时,就会向DNSServer发起递归查询,直到找到主机www.ietf.orgIP地址,并把它封装到IP头的目的地址字段,源地址封装我电脑的对应出口的IP地址,Protocol字段标记为6
数据在数据链路层又封装上以太网标记,其中源MAC地址封装我电脑对应出接口的MAC地址,目的地址封装目的IP地址对应的下一跳的MAC地址,这个地址如果ARP表中有,就直接查得并封装,如果没有,则通过发送ARPRequest进行查询,收到对应的ARPReply,则可以完成ARP表项,从而完成数据链路层封装。封装后的数据到达物理层,经过编码转化后形成二进制比特流(BitFlowing)。
如果中间转发设备是以太网交换机,交换机会根据会根据数据帧目的MAC地址和源MAC地址,查MAC地址表(MACAddressTable和相关的策略进行转发,且保持原数据帧不变。关于MAC地址表构建过程及数据帧转发的更多详细内容请参阅《STP及其在生产中的应用》一节。
如果中间转发设备是路由器设备,路由器收到数据帧查看其报头,发现其EthernetType字段的值是0x0800,把它交给IPv4进程处理。路由器的功能是依据网络层地址转发数据包,转发的依据是转发信息表(FIBForwardingInformation Base,转发表来自于路由信息表RIBRoutingInformation Base,路由表来自于路由选择协议(RoutingProtocol。路由器转发数据出去之前需要像主机一样从上到下重新封装,不过它封装是从网络层及以下开始,重新添加以太网帧头信息,我们把这个过程叫做重新成帧。在重新成帧时因为封装目的MAC地址字段的需要,需要查询ARP表,这里的目的MAC字段同样填充的是目的IP地址对应的下一跳IP地址的MAC地址。有关路由器转发数据的过程的更多详细内容请查阅本书《路由选择》一节。
转发设备是路由器设备,但EthernetType字段的值是0x88470x8848,路由器会将数据送给MPLS进程处理,并根据MPLS标签进行转发。
中间可能还经过了传送网设备或其它转发设备,但是它们基本上都是把IP当作业务来处理的,做的是打包、封装、转发、拆解,还原为IP包过程。
数据经过多次查表转发(MAC地址表和路由转发表等),终于来到接收端,即IETFWeb服务器上。在TCP连接请求到达www.ietf.org主机之前,Web服务程序使用socket()函数创建一个端口,端口号是80,并用bind()函数使之与网络层地址相关联,并使用listen()函数监听这个端口,等待用户的TCP连接请求。当我发送的TCP连接请求被传送到www.ietf.org这台主机上时,依次从以太网封装开始向上层拆解。以太网层的封装EthernetType字段的值是0x0800,送给网络层,由IP来处理;网络层发现IPProtocol字段的值是6,送给传输层,由TCP来处理;传输层发现TCP端口号是80www.ietf.org主机上HTTP应用服务使用accept()函数接受我电脑发送过来的TCP连接请求。
TCP连接建立之后,就收到了我从电脑上发过来的HTTPGET请求,HTTP服务进程根据GET请求的内容,回复我相应的HTML文档。回送过来的数据同样要经过从上层到下层的封装,经过网络设备的转发,当到达我的电脑后,再经过由下层到上层的逐层拆解,最终送到我电脑上发出请求的应用程序—浏览器,浏览器收到HTML文档,解析并呈现出来。于是就出现了图02-22的画面。
02-22在浏览器的地址栏填下网站的地址并回车,

中间发生了很多奇妙的事情

不管是在服务端和客户端,数据都是由应用层产生并逐层向下传递,在接收方,数据先由物理层接收并逐层向上传递,最终送给应用层的应用程序。中继设备只关心物理层;交换机关心数据链路层和物理层,重点在数据链路层;路由器关心下面三层,重点在网络层;个人电脑或服务器等端计算设备或主机设备拥有相对完备的协议栈,但端计算设备和主机设备重点关注的是应用层。
10 饭后思考题

1)为什么TCP首部长度的字段,而UDP没有?
2)有什么办法可以取代低效的TCP,并保留它的可靠性?
3)数据在网络上传递的过程中,要经过不同类型的网络设备,源IP、目的IP、源MAC、目的MAC经过这些设备后是否会重新封装?如何封装?
4)长距离以太网设备为什么要成对使用?
5)全栈升级到IPv6需要怎么做?需要用到哪些技术?有哪些注意事项?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
  • x
  • 常规:

点评 回复

跳转到指定楼层
Becky_2019
Becky_2019  管理员 发表于 2020-2-11 16:46:28 已赞(0) 赞(0)

感谢分享!
  • x
  • 常规:

点评 回复

niuhai211
niuhai211  精英 发表于 2020-2-12 12:24:45 已赞(0) 赞(0)

不客气!
感谢加精!
写这篇文档差点没有把我给折磨死。
因为对市面上现有的教材不满,很多重要的内容要么含糊不清,要么一带而过,所以创作此文,真正写起来才发现,我太南了!
这往篇文档基于《01对数通网络模型的再思考》,两篇写得都很不易,理论创新的部分尤其难,部分内容甚至跟市面上流行的教材有冲突,比如ARP部分,通过大量的文献阅读和实验证实,最终才敢冒天下之大不讳写下来。
希望能够得到更广泛的传播,让大家对数通网络有更加全面和正确的理解。
  • x
  • 常规:

点评 回复

wxyisme
wxyisme   发表于 2020-2-17 17:12:33 已赞(0) 赞(0)

mark,感谢分享!
  • x
  • 常规:

点评 回复

方块505
方块505   发表于 2020-2-20 08:27:25 已赞(0) 赞(0)

手机看到头疼,回去换电脑来看
  • x
  • 常规:

点评 回复

niuhai211
niuhai211  精英 发表于 2020-2-20 22:14:55 已赞(0) 赞(0)

下载附件来看才好。
  • x
  • 常规:

点评 回复

小幺
小幺   发表于 2020-2-22 12:29:16 已赞(1) 赞(1)

虽然你的帖子讲的内容跟学校的教材和市面上的书不太一样,但是觉得你讲得很有道理,解释了我见到的网络的真正的样子。但是帖子看起来太难受了,排版太差了,说好的图片也都是空白。希望有机会分享一下IPv6相关的内容,如果你有独到见解的话。
楼主是用五笔输入法的大叔吗?文章开头就是错字。
  • x
  • 常规:

点评 回复

niuhai211
niuhai211  精英 发表于 2020-2-23 11:48:19 已赞(0) 赞(0)

能看出我是大叔的人,不是大叔就是大婶。
帖子内容是从文档中复制过来的,排版上确实连我自己都不满意。你可以下载附件看呀!
  • x
  • 常规:

点评 回复

shaoranhuan
shaoranhuan   发表于 2020-2-27 08:55:11 已赞(1) 赞(1)

如果有其他学习内容,也请楼主多多分享[征文大赛投稿]+考了HCIE,终于明白数据在网络中是如何传输的+2020.02.10-3230888-1
  • x
  • 常规:

点评 回复

niuhai211
niuhai211  精英 发表于 2020-2-28 14:17:45 已赞(0) 赞(0)

已经申请开通了专栏《数通网络实践》,昨天上了目录,目录涉及的内容还没有完全创作完,计划以后每周更一篇,欢迎围观。

https://forum.huawei.com/enterprise/zh/forum.php?mod=forumdisplay&action=list&fid=813&filter=typeid&typeid=3546


  • x
  • 常规:

点评 回复

12
返回列表
发表回复
您需要登录后才可以回帖 登录 | 注册

警告 内容安全提示:尊敬的用户您好,为了保障您、社区及第三方的合法权益,请勿发布可能给各方带来法律风险的内容,包括但不限于政治敏感内容,涉黄赌毒内容,泄露、侵犯他人商业秘密的内容,侵犯他人商标、版本、专利等知识产权的内容,侵犯个人隐私的内容等。也请勿向他人共享您的账号及密码,通过您的账号执行的所有操作,将视同您本人的行为,由您本人承担操作后果。详情请参看“隐私声明
如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!
登录参与交流分享

登录参与交流分享

登录