计算机网络基础
1. 网络基本术语
1.1 客户机/服务器模型
网络上任何一台计算机在任意时刻都充当两个基本的角色之一:客户机或服务器。服务器是在网络上共享其资源的计算机,而客户机是访问共享资源的计算机。这一模型称为客户机/服务器模型(C/S模型),其方式为:客户机请求信息,服务器通过提供请求的信息来对这类请求做出响应。
1.2 网络介质
为了成功地进行通信,计算机必须共享对公共网络介质的接入。
常见的物理介质有:
- 同轴电缆(已淘汰)
- 双绞线(即网线)
- 光纤
无线联网时常用的介质有:
- 无线电波
- 红外线信号
- 微波
为了接入任何一个网络,计算机必须使用某种物理接口连接到网络介质,这就是网络接口卡(Network Interface Card,NIC),又称网络适配器。网络接口卡执行两个重大任务:1)建立和管理计算机的网络连接;2)对于输出消息来说,将数字形式的数据转换成信号,并且对于输入消息来说,将信号转换为数字数据。
1.3 网络协议
要使网络上的两台计算机能够成功地相互通信,他们必须共同遵守过于如何通信的一组规则。这类规则包括如何解释信号、如何识别网络上的计算机、如何发起和结束联网通信以及如何管理网络介质上的信息交换。这种共同遵守的规则就是网络协议,简称协议。例如:TCP/IP、NetBEUI、IPX/SPX等。
网络协议的三要素如下:
-
语义:用于解释比特流的每一部分的意义。
-
语法:语法是用户数据与控制信息的结构与格式,以及数据出现顺序的意义。
-
时序:事件实现顺序的详细说明。
当一组协议协同工作时,称为协议栈或协议包,最常见的协议栈是TCP/IP。
1.4网络软件
计算机需要网络软件发出让它们充当客户机或服务器的请求和响应。在许多联网环境中,计算机调用一个代码层,有时称为网络操作系统(Net Operating System,NOS),由这个代码层控制哪些计算机和用户可以访问网络资源。目前,常见的网络操作系统包括Microsoft操作系统系列、Linux操作系统系列等。
操作系统(OS)指导计算机硬件组成的活动。操作系统控制内存、CPU、存储设备和外围设备。
多任务是大部分网络操作系统使用的一个技术,目的是利用硬件配置的大部分功能。多任务是指OS能够支持多个进程。
1.5 网络服务
网络存在的真正原因是为用户提供服务,而这类服务主要驻留在单独的计算机或服务器上。例如:在NOS上提供文件共享、打印服务;协议提供文件共享、电子邮件服务;Web服务器为哪些请求网络服务的网络用户提供服务。
2. OSI (Open System Interconnection)七层参考模型
背景:
世界上第一个网络体系结构是由IBM公司在1974年提出的SNA(System Network Architecture),中文译名为系统网络体系结构。SNA的缺点是若采用IBM的网络体系,就只能选用IBM的产品,不同体系的网络结构之间是无法进行互联通信的。
因此,国际标准化组织ISO于1977年成立委员会,提出了不基于具体机型、操作系统或公司的网络体系结构OSI(Open System Interconnection),称为开放系统互联模型。
OSI上三层的任务是数据处理(称为资源子网),下三层的任务是数据通信(称为通信子网),而中间的传输层是通信子网和资源子网的接口,起到承上启下的作用。
2.1 OSI参考模型基本术语
2.1.1 PDU传输
在OSI参考模型中,传输系统沿着协议栈向下传递数据时,在协议栈的每一层都将建立协议数据单元(Protocol Data Unit,PDU)。在协议栈的每一层上,软件在PDU上添加了它自己的特殊格式,这个添加到PDU上的特殊格式或地址称为报头,添加这个报头的过程称为封装。
接收系统通过协议栈自下而上传送这些分组,并在协议栈的每一层分离出PDU中的相关信息。分组从PDU剥离它的特定信息(报头),并且将PDU传递到下一个高层。从PDU剥离报头的过程称为解封装。
每一层的PDU的称谓:
OSI参考模型对应层 | PDU对应称谓 |
---|---|
物理层 | 数据位(bit) |
数据链路层 | 数据帧(frame) |
网络层 | 数据包(packet) |
传输层 | 数据段(segment) |
其他更高层 | 数据(data) |
2.1.2 LAN/WAN
限制为一个计算机集合、一条或多条电缆以及其他的外围设备的小型网络,被称为局域网(Local Area Network,LAN)。LAN是构建较大型网络(称为互联网络)的基本模块。
当网络范围扩展到包含多个地理位置的多个用户组时,LAN可以扩展为广域网(Wide Area Network,WAN)。
2.2 应用层(Application Layer)
介绍:
应用层是OSI参考模型的最高层,它是计算机用户、以及各种应用程序和网络间的接口。其主要功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。
应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务等。
主要功能:
- 用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
主要协议:
- HTTP( Hypertext Transfer Protocol,超文本传输协议 )
- FTP( File Transfer Protocol,文件传输协议 )
2.3 表示层(Presentation Layer)
介绍:
表示层是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。
主要功能:
- 数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。主要是进行数据的编码和解码。
- 压缩和解压缩:为了减少数据的传输量,表示层还负责数据的压缩与恢复。
- 数据的加密与解密:为了提高网络的安全性。
2.3.1 TCP/IP网络安全
- 加密:如果想在网上发送数据,并且不希望他人很容易就能明白数据的含义,那么需要一个加密器,又称为算法。
- 加密和解密使用同一密钥,称为对称加密算法。
- 加密和解密时使用不同密钥的算法称为非对称加密算法。公开密钥算法就是典型的非对称加密算法。
- 不可否认性:指消息的接收者确定此消息的发送者正是它所希望的。不可否认性有多种形式:
- 散列:加密散列函数是一个单向函数,单向是指实际上是不可逆求的。
- 数字签名:由一串0和1组成的序列,只能由发送者生成。
- 公开密钥架构:根机构在顶层,底层机构负责颁发证书。
- 认证:通常通过用户输入用户名和口令来获得认证。
- 授权:使用访问控制列表(Access Control List,ACL),来分配访问级别。
2.3.2 TCP/IP安全标准
常见的认证标准:
- 点对点协议(Point-to-Point Protocol,PPP):要求用户输入用户名和口令。
- 最早使用口令认证协议(Password Authentication Protocol,PAP)把用户名和口令以明文的方式在网络中传递。
- 还可以选择基于hash技术的查询握手认证协议(Challenge Handshake Authentication Protocol,CHAP)。
- AAA(Authentication Authorization and Accounting,“认证、授权、计账”):其主要内容如下。
- 认证:这里的认证一般指连接到网络的计算机必须提供允许访问此网络的证书。
- 授权:通过认证后,计算机确定它在网络上可以执行哪些操作。
- 计账:执行一些计帐操作,如记录用户登录及退出的次数和时间等。
- Kerberos协议
- EAP协议
- 802.1 X
常见的加密标准:
- SSH:SSH是Telnet的安全版本。
- 隧道:隧道是两台分离计算机上两个不同程序之间的加密链路。任何进入到隧道离的数据包都会自动加密,穿过隧道,到达另一端,并在另一端进行解密。
认证与加密相结合:
- SSL/TLS:安全套接字层(Secure Sockets Layer,SSL)只限于HTML、FTP等老式的TCP程序。传输层安全协议(Transport Layer Security,TLS)没有这样的限制。两者的工作方式几乎完全一样。
- IPSec:Internet协议安全(Internet Protocol Security,IPSec)具有加密和认证功能。
2.4 会话层(Session Layer)
介绍:
会话层是OSI模型的第五层,是用户应用程序和网络之间的接口,主要任务是向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层连接称为会话。因此会话层的任务就是创建、管理和终止会话。
当建立对话时,用户必须提供他们想要连接的远程地址(此地址不同于逻辑地址和物理地址),是为用户专门设计的,例如域名(Domain Name)就是一种网络上使用的远程地址。
主要功能:
- 会话管理
- 会话流量控制
- 寻址:使用远程地址建立会话连接。
- 出错控制:检查磁盘空间、打印机缺纸等类型的高级错误,而不是通信介质的错误。
2.4.1 域名解析系统
域名解析系统(DNS,Domain Name System)可以把IP名字转换成IP地址。
DNS解析原理如下:
-
浏览器会检查缓存中有没有这域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。
-
如果过程1中浏览器缓存中没有域名对应的ip,则从操作系统本身去做域名解析,我们在windows中的host文件可以设置特定域名映射到特定ip。
C:\Windows\System32\drivers\etc\hosts
3.**向本地域名解析服务器(LDNS)发起域名解析请求。**上述步骤的1、2都是在本机中完成的域名解析,如果经过1、2步骤都没有完成域名的解析,则需要向LDNS发起域名解析。
4.**向根域名解析服务器(RDNS)发起域名解析的请求。**当步骤3中没有完成域名的解析,则需要向RDNS发起域名解析的请求。
5.根域名服务器返回通用顶级域名解析服务器(gTDL)地址
LDNS向根域名服务器发起请求,根域名服务器返回的是所查询的通用顶级域名(Generic top-level-domain, gTLD)地址,常见的通用顶级域名有.com、.org、.edu。
6.本地域名服务器向gTLD发起解析域名请求。
7.gTLD服务器接收请求并返回注册的域名服务器(Name Server服务器)
当gTLD服务器接收到本地域名服务器发起的请求后,并根据需要解析的域名,找到该域名对应的Name Server 服务器,通常情况下,这个Name Server服务器就是你注册的域名服务器,那么你注册的域名的服务上的服务器将承担起域名解析的任务。
8.本地域名服务器向Name Server服务器发起域名解析请求。
9.Name Server服务器会查询存储的域名和IP的映射关系表,然后返回该域名对应的ip和TTL给本地域名服务器,本地域名服务器进行缓存这个域名和ip的对应关系,缓存时间由TTL决定。
10.本地域名服务器返回查询域名对应的ip给用户(浏览器),浏览器进行缓存,缓存时间由TTL决定。
常见的域名类别:
域名 | 类别 |
---|---|
.com | 商业组织 |
.mil | 军队组织 |
.edu | 教育机构 |
.net | 网络服务提供商 |
.gov | 政府组织 |
.org | 其他组织,通常是非营利性的 |
主要协议:
- SSL( Secure Sockets Layer,安全套接字协议 )
- TLS( Transport Layer Security,传输层安全性协议 )
2.5 传输层(Transport Layer)
介绍:
传输层位于OSI模型的第四层,该层是通信子网和资源子网的接口,起到承上启下的作用。
传输层提供会话层和网络层之间的传输服务,这种服务从会话层中获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能够正确无误地传送到网络层。
传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定后,传输层负责监督工作。
主要功能:
- 传输连接管理:传输层在网络层的基础上为上层提供“面向连接(TCP)”和“面向无连接(UDP)”的两种服务。
- 处理传输差错
- 监控服务质量
2.5.1 TCP
传输控制协议(Transmission Control Protocol,TCP)规定了TCP/IP如何面向连接的通信。
2.5.2 UDP
用户数据报协议(User Datagram Protocol,UDP),使用UDP协议的应用程序的一个最好例子是动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)。DHCP无法认定在会话的另一端存在一个等待会话的计算机,因此DHCP会话的每个步骤只是发送与这个步骤有关的信息,不需要对方确认。
普通文件传输协议(Trivial File Transfer Protocol,TFTP)是基于UDP协议的。但是基于UDP协议的TFTP协议没有任何的数据保护,因此千万不要在Internet中的两台计算机之间使用TFTP传输文件。TFTP广泛应用于同一个局域网中计算机之间的文件传输。
2.5.3 ICMP
网际控制报文协议(Internet Control Message Protocol,ICMP)。用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
在PING命令中,可以看到ICMP的作用。PING命令是一个ICMP应用程序,它向命令中指定的IP地址发送一个ICMP数据包,要求对方响应此请求。
2.5.4 IGMP
Internet组管理协议(Internet Group Management Protocol,IGMP)是另一个很少见但非常重要的传输层协议。多播的一个主要问题就是确定哪些计算机想接收多播消息,哪些不想接收多播消息。IGMP就相当于粘合剂,路由器用它与主机通信来确定成员身份。
2.5.5 端口号
端口号划分如下:
端口号范围 | 类型 |
---|---|
0-1023 | 知名端口号 |
1024-49151 | 注册端口号 |
49152-65535 | 动态或专用端口号 |
常见知名端口号如下:
端口号 | 用途 |
---|---|
20(数据)/21(连接)端口 | FTP文件传输服务 |
22端口 | SSH远程连接服务 |
23端口 | TELNET终端仿真服务 |
25端口 | SMTP简单邮件传输服务 |
53端口 | DNS域名解析服务 |
80端口 | HTTP超文本传输服务 |
443端口 | HTTPS加密的超文本传输服务 |
69端口 | 基于UDP的TFTP文件传输服务 |
可以通过netstat -ano
来查看一台计算机开启的端口号。
2.5.6 连接状态
分析上图第一行端口的内容:
协议 | 本地地址 | 外部地址 | 状态 | PID |
---|---|---|---|---|
TCP | 0.0.0.0:21 | 0.0.0.0:0 | LISTENING | 4608 |
本地地址
指本地IP地址及其正在使用的端口号
外部地址
指连接某个端口的远程主机的IP地址和端口号
可以通过状态
来确定该端口的连接状态。有如下常见参数值:
- LISTENING:表示处于侦听状态,就是说明该端口是开放的,等待连接,但还未被连接。
- ESTABLISHED:表示已经建立连接,两台机器正在通信。
- TIME_WAIT:表示结束了这次连接,说明曾经访问过。Web浏览器已经中断了另一侧的连接,正在等待预先定义好的间隔时间。
可以通过PID
来确定程序名。
2.6 网络层(Network Layer)
介绍:
网络层是OSI模型的第三层,它是OSI参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务。路由器工作在这一层。
主要功能:
- 寻址:数据链路层中使用的是物理地址(如MAC地址),仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一个子网中的设备都会被分配一个唯一的地址,该地址应当是逻辑地址,如IP地址。
- 交换
- 路由服务
- 连接服务
2.6.1 可路由选择的协议
工作在网络层的协议栈称为可路由选择的协议,而不包含网络层的协议栈称为不可路由选择的协议。TCP/IP协议栈就是典型的可路由选择协议。
TCP/IP协议栈中包含于网络层的子协议有:
- 网际互连协议(IP,Internet Protocol):为TCP/IP协议栈提供源和目的寻址及路由选择,是无连接的数据报协议。
- Internet控制消息协议(ICMP,Internet Control Message Protocol):用于发送控制消息(例如错误消息、流控制指令和确认)的网络层协议。PING指令使用的就是ICMP返回有关远端响应的消息。
- 地址解析协议(ARP,Address Resolution Protocol):将逻辑地址与物理地址相关联的一个网络层协议。
- 路由信息协议(RIP,Routing Information Protocol):用于路由发现的距离-矢量协议,收集和交换与网络路由和状态有关的信息。
- 开放最短路径优先(OSPF,Open Shortest Path First):用于确定通过网络的最佳路径的链路状态路由选择协议。
2.6.2 IP地址与子网掩码
(无特殊说明,以下IP地址均指IPv4)
IP负责TCP/IP环境中的寻址和路由选择。IP地址由32比特(4字节)组成,从0到255的十进制数字代表一个字节。IP地址分为两个部分——网络部分和主机部分。
IP地址可以分为以下几类:
- A类地址:用于非常大的公司和政府。IP地址注册处分配第一个8比特组。第一个比特组从1-126。
- B类地址:用于中等大小的网络。IP地址注册处分配头两个8比特组。第一个比特组从128-191。
- C类地址:用于小型网络。IP地址注册处分配前三个8比特组。第一个比特组从192-223。
- D类地址:用于组播的特殊功能。第一个比特组从224-239。
- D类地址:用于实验应用。第一个比特组从240-255。
我们可以在cmd命令行中输入ping 域名
或nslookup 域名
查看一个域名的IP地址:
同时,我们可以在cmd命令行中输入tracert 域名
来追踪IP地址:
IP使用地址的子网掩码确定哪一部分地址代表网络部分,并且哪一部分代表主机。子网掩码也是一个32位的数字,并且总是在分配IP地址的时候分配给主机。二进制1
表示IP地址中的对应比特属于IP地址的网络部分,二进制0
表示IP地址中的对应比特属于IP地址的主机部分。
默认的A类子网掩码是255.0.0.0,默认的B类子网掩码是255.255.0.0,默认的C类子网掩码是255.255.255.0。
2.6.3 CIDR与子网划分
按类寻址现已被放弃,因为会造成主机地址的浪费。为了跟有效地使用所有的可用地址,引入了一个新的寻址机制——无分类域间路由选择(CIDR,Classless Inter-Domain Routing)。CIDR允许在距地址开始处的任意特定位数划分网络和主机的界线。
2.6.4 网络地址转换
网络地址转换(NAT,Network Address Translation)允许计算机在连接到Internet的时候使用私有IP地址。NAT解决了Internet上IP寻址的问题,保护了通过路由器连接的计算机,同时也节约了IP地址资源。
2.6.5 路由器
路由器属于网际设备,是应用于不同网段或不同网络间的设备。
每一个路由器中都保存有一个路由表,路由表为路由器存储到达网络上任何一个目的地所需要的一切必要的信息。
Destination | Next-Hop | Netwask | Flags | Interface |
---|---|---|---|---|
202.112.10.0 | * | 255.255.255.224 | U | eth0 |
default | 202.112.10.1 | 0.0.0.0 | UG | eth0 |
上表中的参数说明:
- 目的IP地址(Destination):用于指定某一特定主机。
- 下一跳(Next-Hop):该值可以是直接连接的网路IP地址,也可以是一个在直接相连网络上的路由器。
- 标志(Flags):其中一个标志用于指明目的IP地址是网络地址还是主机地址,另一个标志用于指明下一跳路由器是路由器还是接口。
- 接口(Interface):它为数据包的传输指定一个网络接口。
路由器中常见的参数:
- 吞吐量:指的是路由器对数据包的转发能力。
- 背板能力:指的是路由器背板容量或总线带宽能力。
- 丢包率:在一定的数据流量下,路由器不能正确进行转发的数据包在总的数据包中所占的比例。
- 转发时延:需转发数据包最后一比特进入路由器端口到该数据包的第一比特出现在端口链路上的时间间隔。
2.7 数据链路层(Data Link Layer)
介绍:
数据链路层是OSI参考模型的第二层。将计算机连接到网络需要在计算机和联网介质之间有一个物理接口,那就是数据链路层。
一般数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。
数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将上一层的数据帧拆装为位流形式的数据转发到物理层。
该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
MAC子层的主要功能:
- 解决共享型网络中多用户对信道竞争的问题
- 完成网络介质的访问控制
LLC子层的主要功能:
- 建立和维护网络连接
- 执行差错校验
- 流量控制和链路控制
2.7.1 网络接口卡
网络接口卡(NIC):将计算机连接到网络需要在计算机和联网介质之间有一个物理接口,这个接口在特殊的网络接口卡(NIC)中(也称为网络适配器或网卡),网卡插入计算机机箱的适配器插槽中。其主要功能包括:数据转换、数据缓存、通信服务。
任何一个NIC上的地址都称为MAC地址。这些地址的形式是:用冒号隔开的6个两位的16进制数字。前3组数字标识制造商,后3组数字定义来为NIC分配的唯一地址。我们可以通过cmd命令行中的ipconfig /all
来查看MAC地址(物理地址):
2.7.2 分组/帧
计算机通信通常包含长消息。因为网络不能很好地处理大块数据,所以它们将数据重新格式化为较小的更容易管理的部分,称为分组或帧。网络因为如下两个原因将数据分为小的部分:
-
在网络上发送的大数据单元会使这个网络饱和,从而妨碍有效通信。
-
网络不可靠。如果在大量数据传输期间出现错误,那么所有数据都必须重新发送。
所有的分组都有3个基本部分:
报头:包含分组的源地址和目的地址、指示数据传输的警报信号以及同步传输的时钟信息 数据:由实际发送的数据组成 报尾:包含验证分组内容的有效性的信息。这通常包含循环冗余校验(CRC)值
2.7.3 信道接入
当两台计算机同时发送数据时,可能会出现数据碰撞,从而破坏这两个数据。除了将数据重新分成分组之外,计算机还必须有一种方式来确保它发送的数据没有被破坏——信道。
OSI模型中数据链路层的介质访问控制(MAC)子层处理信道接入。有5种主要的信道接入方法:
接入方法 | 解释 |
---|---|
竞争 | 计算机在它们有数据要发送的时候就发送数据 |
交换 | 当网络通过一个称为交换机的特殊设备互连各个节点时,由交换机本身控制介质的接入 |
令牌传递 | 称为令牌的一个特殊分组顺序地将一台计算机传递到另一台计算机。只有控制令牌的计算机才能发送数据 |
请求优先级 | 只能集线器控制网络的接入。集线器以循环方式搜索所有的连接,当计算机有数据要发送时,它给集线器发送一个请求信号 |
轮询 | 中央控制器询问网络上的每台计算机是否有数据要发送,如果有,计算机可以发送,然后轮到下一台计算机 |
2.7.4 常见设备
- 网桥:主要用于筛选网络分段之间的业务。
- 交换机:是星型拓扑结构网络的中央连接点。与集线器不同的是,交换机不只是再生输入信号并且将信号从其他所有端口中继出去,而是实际地确定将目标设备连接到哪个端口,并且只将消息转发到那个端口。
2.8 物理层(Physical Layer)
介绍:
所有网络都必须提供一种方法,从而将数据从一个系统传送到另一个系统。要传递数据,就需要建立物理通道。物理层定义了计算机之间数据的传输方法,是创建物理网络连接的地方。
主要功能:
- 利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
2.8.1 网络拓扑结构
-
总线型拓扑结构:总线型拓扑结构的所有组件都是通过主干连接的,这条主干是互连直线上所有计算机的单根电缆。这种结构是最简单的。但是,这个固有的简单性是个弱点:单根电缆断裂可能会使整个网络中断。
细缆是总线型拓扑结构中最常见的电缆类型。 -
星型拓扑结构:由电缆连接到中心集线器的计算机。当计算机发送信号时,集线器接收信号并沿着每段电缆将它转发给其他所有的计算机或者连接到集线器的其他设备。星型拓扑结构的一个优点是资源的集中化。另外,如果一台计算机发生故障,不回影响网络的其他部分。
-
环形拓扑结构:当每台计算机直接连接到下一台计算机时,形成的一圈电缆构成了环型拓扑结构。
2.8.2 常见设备
-
中继器:沿着线缆传输的信号会衰弱,并且会由于衰减而失真。如果线缆足够长,那么信号最终将衰弱得无法到达目的地。中继器可以再生信号,并且能够扩展网络的覆盖范围。中继器的功能是接收信号、消除它的噪声、再生它并且继续沿线路发送它,有效地将网络长度加倍。
-
集线器:集线器是星型网络的中心,分为两类:有源和无源。集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。
中继器和集线器的区别:
- 连接设备的线缆的数量。一个中继器通常只能有两个端口;而一个集线器通常有4至20个端口。
- 中继器只起到连接的作用,而集线器则还有分配网络资源的作用。
2.9 总结
OSI参考模型中每一层的特点:
OSI参考模型中的各层 | 功能 | PDU | 网络组件 |
---|---|---|---|
应用层 | 将信息从程序传递到程序 | 数据(data) | 文件传输协议(FTP)、超文本传输协议(HTTP) 和客户端软件的组件 |
表示层 | 处理文本格式化和显示代码转换 | 数据(data) | 数据转换、协议转换、数据加密或加密、字符集问题和图形命令以及重定向器 |
会话层 | 建立、维护和协调通信 | 数据(data) | 名称查询以及用户登录和注销,域名系统(DNS)和NetBIOS名称解析 |
传输层 | 确保数据传递的准确性 | 分段(segment) | TCP/IP协议包的TCP部分以及IPX/SPX协议包的SPX部分 |
网络层 | 确定传输路由以及处理消息的传递 | 分组或数据包(packet) | 软件组件包括TCP/IP的IP组件和IPX/SPX的IPX组件、路由器以及高级交换机 |
数据链路层 | 编码、寻址和传输信息 | 数据帧(frame) | 软件组件是NIC驱动程序,硬件组件包括NIC和交换机 |
物理层 | 管理硬件连接以及处理信息的发送和接收 | 数据位(bit) | 介质上使用的所有电缆和连接器、中继器以及集线器 |
3. TCP/IP 协议栈
背景:
Internet的前身叫做ARPANET,阿帕网当时使用的是网络控制协议(Network Control Protocol, NCP)。NCP的缺点是仅能用于同构环境中(同构环境是网络上的所有计算机都运行相同的操作系统)。
因此,在1980年,用于“异构”环境的网络环境中的TCP/IP协议研制成功。后来,互联网通信的各类协议(HTTP、IP、DNS、TCP、ARP)整体都被纳入这一协议体系中,被统称为“TCP/IP协议族”。
介绍:
TCP/IP协议栈是一系列网络协议的总和,它定义了电子设备如何接入互联网、以及数据间如何传输。TCP/IP协议采用4层结构:应用层、传输层、互联网络层和网络接口层。
3.1 网络接口层
介绍:
以太网规定一组电信号就是一个数据包,一个数据包被称为一帧,制定这个规则的协议就是以太网协议。
一个完整的以太网数据包如下:
首部(14个字节) | 数据(46 —— 1500个字节) | 尾部(4个字节) |
---|
- 首部包含了目标MAC地址、源MAC地址和类型
- 如果需要传输的数据超过1500个字节.,则需要分割成多个帧进行发送
- 尾部表示数据帧校验序列,用于确定数据包在传输过程中是否损坏
MAC地址拓展:
MAC地址是每块网卡的身份标识,具有全球唯一性。MAC地址采用十六进制标识,共6个字节,前三个标识厂商编号,后三个表示网卡流水号。
以太网(ethernet ),可以理解为是一个局域网,局域网的标准我们称为以太网标准,以太网标准汇总定义了通信的地址和通信机制。
mac地址表示方法:
十六进制,总长度是48个bit,一般通过:进行分割,分割乘六个部分,其中前三个部分(24位)表示的是厂商号码,后三个部分(24位)是厂商分配的。
下图为在MAC地址中通信的原理:
3.2 互联网络层
介绍:
网络层引入三个协议,分别是IP协议、ARP协议和路由协议。
3.2.1 IP协议
疑问:
发送者如何判断接收者和自己属于同一子网内?
为解决这一问题,我们引入了IP协议,区分两台主机是否同属于一个网络。
IP地址目前有两个版本,分别是IPv4和IPv6。
- IPv4是一个32位的地址,常采用4个十进制数字表示。IP协议将这个32位地址分为两个部分:网络地址部分和主机地址部分。如果两个IP地址在同一个子网内,则网络地址部分一定相同。
为了判断IP地址中的网络地址,IP协议引入了子网掩码,IP地址和子网掩码通过按位与运算后可以得到网络地址。
3.2.2 ARP协议
疑问:
发送者如何知道接收者的MAC地址?
为了解决这一问题,我们引入了ARP协议,即地址解析协议。
下图为ARP的工作原理图:
其工作原理如下:
-
ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址
-
然后这个数据包会在链路层进行再次包装,生成以太数据包,最终由以太网广播给子网内的所有子机,广播IP地址为
255.255.255.255
-
每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包
-
ARP接收返回消息,以此确定目标机的MAC地址
在Windows系统下,我们在cmd输入
arp -a
就可以查询本机缓存的ARP数据。
3.2.3 路由协议
疑问:
如果接收者和自己不在同一子网内,数据包将如何发给对方?
为了解决这一问题,我们引入路由协议。其工作原理如下:
- 首先通过IP协议来判断两台主机是否在同一个子网内,如果在同一个子网内,就通过ARP协议查询对应的MAC地址
- 如果不再同一个子网内,以太网会将该数据包转发给本子网的网关进行路由(网关是互联网上子网与子网之间的桥梁)
- 网关会进行多次转发,最终将该数据包转发给目标IP所在的子网中
3.2.4 IP数据包(补充)
介绍:
在网络层被包装的数据叫做IP数据包。IP数据包由首部和数据两部分组成。
首部长度为20个字节,主要包含了目标IP地址和源IP地址,目标IP地址是网关路由的线索和依据;数据部分的最大长度为65515字节。
理论上一个IP数据包的总长度可以达到65535个字节,而以太网数据包的最大长度为1500个字节,如果超过这个大小,就会对IP数据包进行分割,分成多帧发送。
首部(20个字节) | 数据(最大65515个字节) |
---|
3.3 传输层
背景:
链路层定义了主机的身份,即MAC地址;而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就可以从一个主机发送到另一个主机上。
但实际上数据包是从一个主机的某个应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包的。
因此传输层引入了UDP协议来解决这个问题。UDP协议给每个应用程序表示身份,定义了端口。这样,当数据包到达主机以后,就可以根据端口号找到对应的程序了。UDP定义的数据包就叫做UDP数据包。
UDP数据包结构如下:
首部(8个字节) | 数据(最大65527个字节) |
---|
UDP协议介绍:
UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到。
3.4 应用层
理论上讲,有了以上三层协议的支持,数据已经可以从一个主机上的应用程序传输到另一台主机的应用程序了,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差。因此,应用层定义了各种各样的协议来规范数据格式,常见的有 HTTP、FTP、SMTP 等。
主要功能:
- 定义数据格式,并按照对应的格式解读数据
3.5 数据的封装和解封装
数据的封装:
- 用户信息转换为上层数据,以便在网络上传输,该阶段在应用层完成
- 数据在前面加上TCP头部,称为数据段,并在发送方和接收方建立一条可靠的连接,该阶段在传输层完成
- 数据段转化为数据包或数据报,并在报头中加入IP头部,这样每一个数据包都可以通过互联网络进行传输,该阶段在网络层完成
- 数据包或数据报在前面加上MAC头部,转换为数据帧,以便在本地网络中传输,该阶段在数据链路层完成
- 数据帧转换为比特流,该阶段在物理层完成
数据的解封装与数据的封装相反,这里不再一一赘述。
3.6 协议号和端口号
端口号:
端口号是传输层的概念,用来表示应用层使用的是哪种服务或应用。
协议号:
协议号是网络层的概念,用来表示上层传输层使用的是哪种协议,比如协议号6表示传输层使用的是TCP协议,协议号17表示传输层使用的是UDP协议。
端口号的范围:0-65535
端口号的划分:
-
0-1024
为知名端口,一般开放在服务器上面 -
常用的知名端口:
- HTTP 超文本传输服务: TCP 80端口
- HTTPS 加密的超文本传输服务:TCP 443端口
- TELNET 终端仿真服务: TCP 23端口
- 安全 Shell(SSH)服务: TCP 22端口
- FTP 文件传输服务:TCP 21端口
- DHCP 动态主机配置服务:UDP 用户端口 68 服务器 67
- DNS 域名解析服务: UDP 53端口
-
1025-65535
为高端口,出现在客户端设备上面,一般是随机的
数据的解封装与数据的封装相反,这里不再一一赘述。
3.6 协议号和端口号
端口号:
端口号是传输层的概念,用来表示应用层使用的是哪种服务或应用。
协议号:
协议号是网络层的概念,用来表示上层传输层使用的是哪种协议,比如协议号6表示传输层使用的是TCP协议,协议号17表示传输层使用的是UDP协议。
端口号的范围:0-65535
端口号的划分:
-
0-1024
为知名端口,一般开放在服务器上面 -
常用的知名端口:
- HTTP 超文本传输服务: TCP 80端口
- HTTPS 加密的超文本传输服务:TCP 443端口
- TELNET 终端仿真服务: TCP 23端口
- 安全 Shell(SSH)服务: TCP 22端口
- FTP 文件传输服务:TCP 21端口
- DHCP 动态主机配置服务:UDP 用户端口 68 服务器 67
- DNS 域名解析服务: UDP 53端口
-
1025-65535
为高端口,出现在客户端设备上面,一般是随机的
主要参考书籍:《计算机网络技术》 清华大学出版社 陕华 薛芳 著