[Linux]Network Basics
Network Basics
1 网络基础概述
在探讨家庭网络时,有一下几个关键组件:
- ISP(互联网服务提供商):即为提供家庭互联网接入的公司。
- 路由器:路由器使网络中的每台设备都能连接到互联网。现代路由器通常支持无线连接或以太网电缆连接。
- WAN(广域网):指从路由器延伸至更广阔网络(如互联网)之间的所有中间网络。
- WLAN(无线局域网):这是指路由器与各种无线设备(例如笔记本电脑)之间建立的网络。
- LAN(局域网):指的是路由器与有线设备(如台式PC)之间形成的网络。
- 主机:网络中的每台设备都被称为一个主机。
在网络中传输的数据和信息以数据包的形式进行传递。具体的参考详细的计网课程。
2 TCP/IP模型
TCP/IP模型是互联网的基础,其实现了网络通信的具体操作。该模型利用TCP/IP协议簇(通常简称为TCP/IP)来定义数据如何在网络中被收集、寻址、传输和路由。
应用层
应用层位于TCP/IP模型的最顶层,决定了计算机程序(如网页浏览器)如何与传输层服务交互以查看发送或接收的数据。此层涉及的协议主要包括:
- HTTP(超文本传输协议):用于互联网上的网页。
- SMTP(简单邮件传输协议):用于电子邮件的传输。
传输层
传输层负责确定数据如何传输,包括检查正确的端口、数据完整性,并确保数据包的准确交付。此层涉及的协议主要有:
- TCP(传输控制协议):提供可靠的数据传递服务。
- UDP(用户数据报协议):提供不可靠的数据传递服务,适用于对速度要求较高而对可靠性要求不高的场景。
网络层
网络层规定了如何在主机之间以及跨网络移动数据包。它所使用的协议主要包括:
- IP(互联网协议):帮助将数据包从一台机器路由到另一台。
- ICMP(互联网控制消息协议):用于报告错误信息和调试信息,帮助了解网络状态。
链路层
链路层定义了如何通过物理硬件发送数据,例如通过以太网、光纤等媒介进行数据传输。
3 Network Addressing
在网络中,主机和其他设备通过MAC(媒体访问控制)地址和IP地址来识别,而为了便于人类记忆,我们使用主机名来标识一台主机。
MAC地址
MAC地址作为硬件地址的唯一标识符,在设备的生命周期内不会改变。当想要接入互联网时,机器需要一个名为网络接口卡的设备。此网络适配器有自己的硬件地址,用于标识机器。例如,以太网设备的MAC地址可能看起来像这样:00:C4:B5:45:B2:43。MAC地址在生产时分配给网络适配器,每个制造商都有一个组织唯一标识符(OUI),用于标识制造商身份。OUI由MAC地址的前三个字节表示。例如,Dell的OUI为00-14-22,因此Dell的网络适配器可能具有这样的MAC地址:00-14-22-34-B2-C2。
IP地址
IP地址用于在网络中标识一台设备,它独立于硬件,并且根据使用的是IPv4还是IPv6,其语法可能会有所不同。对于IPv4,一个典型的IP地址可能看起来像这样:10.24.12.4。IP地址与网络的软件部分一起使用。每当系统连接到互联网时,都应该有一个IP地址。如果网络发生变化,IP地址也可能随之变化,并在整个互联网范围内保持唯一性(但涉及到NAT的话,并不总是如此)。
要在网络间传输数据包需要软件和硬件的协同工作,因此有两种标识符:MAC(硬件)和IP(软件)。
主机名
识别机器的另一种方式是通过主机名。主机名将IP地址绑定到一个人类可读的名字上。这意味着,不需要记住如192.12.41.4这样的数字序列,而是只需要记住类似myhost.com这样的名字即可。这种方式大大简化了网络配置和管理的复杂度。
4 应用层
假设需要通过电子邮件客户端向Patty发送一封邮件。将遍历TCP/IP协议栈的每一层来执行这一操作。
数据包用于在网络中传输数据,它由头部和负载组成。头部包含了关于数据包去向及其来源的信息,而负载则是实际被传输的数据。当数据包在网络中传输时,每一层都会在数据包的头部添加一些信息。同时需要注意的是,不同的层对于“数据包”有不同的术语。在传输层,实际上将数据封装成段;而在链路层,称其为帧。但只需记住,“数据包”可以泛指这一概念。
应用层工作流程
一切始于应用层。应用层通过指定端口与传输层通信,并通过此端口发送数据。
- 数据封装:当用户尝试发送一封邮件时,应用层负责对邮件内容进行初步封装。
- 端口指定:为了实现邮件的发送,应用层选择通过指定端口(如SMTP使用的25号端口)与下一层(即传输层)进行通信。
- 数据传输:一旦端口连接建立,邮件数据便通过该端口向下传送到传输层,准备进一步封装并传输。
5 传输层
传输层负责以网络可读的方式帮助我们传输数据。它将数据分割成多个部分以便于在网络中传输,并在接收端按正确的顺序重组。这些部分被称为段,使得数据的传输更为便捷。
端口
尽管通过IP地址可以将数据发送到特定位置,但这些地址不足以将数据定向至具体的进程或服务。例如,HTTP服务是通过端口进行通信的。若要发送网页数据,则需通过HTTP端口(80号端口)进行。除了形成段之外,传输层还会将源端口和目的端口附加到段上,这样当接收方接收到最终的数据包时,就知道应使用哪个端口。
UDP协议
UDP是一种不可靠的数据传输方法,实际上它并不保证所有原始数据都能到达目的地。它主要应用在一些对速度有要求的应用上,例如在媒体流传输中,丢失一些帧以换取更快的数据传输速度是可以接受的。
TCP协议
TCP提供了一种可靠的、面向连接的数据流。TCP利用端口在主机之间发送数据。一个应用会在其主机的一个端口与远程主机上的另一个端口之间建立连接。为了建立这种连接,我们需要使用TCP三次握手过程:
- 客户端(连接进程)向服务器发送SYN段请求连接。
- 服务器发送SYN-ACK段给客户端,确认连接请求。
- 客户端发送ACK段给服务器,确认服务器的连接请求。
一旦建立了连接,数据便可以通过TCP连接交换。数据被分成不同的段并通过TCP序列号进行追踪,确保它们在交付时能够正确排序。在电子邮件示例中,传输层将目的端口(25号端口)附加到源主机的源端口上。
传输层工作流程
- 数据分割:传输层将应用层传来的数据分割成易于管理的部分(段),并为每个段分配相应的源端口和目的端口信息。
- 端口通信:通过指定端口(如SMTP使用的25号端口),确保数据准确无误地发送至目标服务或进程。
- 可靠性保障:采用TCP协议时,通过三次握手建立可靠连接,并使用序列号保证数据段按序重组,从而支持高效且有序的数据传输。
6 网络层
网络层负责决定从源主机到目标主机的数据包路由。互联网实际上由众多网络组成。这些构成互联网的小型网络被称为子网。所有子网以某种方式相互连接。IP地址定义了通往不同子网的规则。
在网络层中,它接收来自传输层的段,并将此段封装成一个IP数据包,然后在数据包头部附加源主机和目标主机的IP地址。此时,数据包包含了其目的地信息及其来源信息。随后,该数据包被发送至物理硬件层。
网络层工作流程
- 路由选择:网络层确定数据包从源主机到目的主机的最佳路径,即使跨越多个子网。
- 数据封装:接收到来自传输层的段后,网络层将其封装为IP数据包,并在数据包头添加必要的源和目的IP地址信息。
- 物理层传递:完成封装和地址附加后,数据包准备就绪,可以向下传递至物理层进行实际传输。
7 链路层
在TCP/IP模型的最底层是链路层,这一层与硬件紧密相关。
在链路层中,数据包被进一步封装成帧。帧头附加了源和目标主机的MAC地址、校验和以及数据包分隔符,以便接收方能够识别数据包的结束位置。
在数据链路层封装的适合,首先链路层将源MAC地址添加到帧头,但同样需要知道目标主机的MAC地址。使用ARP协议可以获取目标主机的MAC地址。
ARP(地址解析协议)
ARP用于查找与IP地址关联的MAC地址,并在同一网络内部使用。如果目标不在同一网络上,会使用路由系统确定下一个接收数据包的路由器。一旦进入相同网络,就可以使用ARP。
当处于同一网络时,系统首先查询存储有IP地址与MAC地址对应关系的ARP查找表。如果找不到对应的值,则会发送一个广播消息,通过ARP协议查询哪个主机拥有IP地址10.10.1.4。广播消息是一种特殊的消息,它会被发送给网络上的所有主机。任何具有请求IP地址的机器都会以包含IP地址和MAC地址的ARP响应报文回复。
有了所需的全部数据,包括IP地址和MAC地址,链路层通过网络接口卡转发此帧,直到找到目标所在的网络。
数据包遍历过程
以下是简化版的数据包遍历过程:
- 应用层:Pete发送一封邮件给Patty,这些数据传递至传输层。
- 传输层:将数据封装进TCP或UDP头部形成段,并附加上目标和源端口号,然后传递给网络层。
- 网络层:将TCP段封装进IP数据包,并附加上源和目标IP地址。接着,数据包被向下传递至链路层。
- 链路层:数据包到达物理硬件并被封装进帧中,同时添加源和目标MAC地址。
- 接收端链路层:Patty的设备通过物理层接收到数据帧,检查数据完整性后解封装帧内容,并将IP数据包传递给网络层。
- 接收端网络层:读取数据包中的源和目标IP地址信息,确认是否匹配本地IP地址。若匹配,则解封装数据包并将段传递给传输层。
- 接收端传输层:解封装段,根据TCP或UDP端口号建立与应用层的连接。
- 接收端应用层:从传输层接收指定端口的数据,并以最终的电子邮件形式展示给Patty。
8 DHCP概述
DHCP(动态主机配置协议)负责为设备分配IP地址、子网掩码和网关。以手机为例,若要获取电话号码以便与他人通话,需要联系运营商并获得一个号码。只要按时缴费,就可以持续使用该号码。在此案例中,DHCP扮演着运营商的角色,它赋予设备一个IP地址,使其能够与其他IP地址通信。此外,IP地址是以租用形式提供的,具有一定的有效期,到期后根据租赁设置进行续期。
DHCP的优势众多,它使得网络管理员无需手动分配IP地址,并防止了IP地址重复的错误配置。每个物理网络应拥有自己的DHCP服务器,以便主机请求IP地址。在家庭环境中,路由器通常充当DHCP服务器的角色。
DHCP获取动态主机信息的简化过程如下:
- DHCP发现:客户端广播一条消息搜索DHCP服务器。
- DHCP提供:网络中的DHCP服务器回复一条提供消息,包含DHCP租约时间、子网掩码、IP地址等信息的包。
- DHCP请求:客户端广播另一条消息通知所有DHCP服务器其接受的提议。
- DHCP确认:服务器发送确认信息给客户端。