一、专业术语
ISO---(International Organization forStandardization)国际标准化组织
OSI---(Open System Interconnection ReferenceModel)开放式系统互联通信参考模型
IEEE---(Institute of Electrical and Electronics Engineers)电气与电子工程师协会
IETF---(Internet Engineering Task Force)互联网工程师任务组
Telnet---远程登录
FTP---(file transfer protocol)文件传输协议
TFTP---(trivial filetransfer protocol)简单文件传输协议
SNMP---(simple networkmanagement protocol)简单网络管理协议
HTTP---(hyper texttransfer protocol)超文本传输协议 HTTP:明文传输 HTTPS:加密功能
SMTP---(simple networkmanagement protocol)简单邮件传输协议
DNS---(domain name system)域名系统
DHCP---(dynamic hostconfiguration protocol)动态主机配置协议
TCP---(transmission control protocol)传输控制协议
UDP---(user datagram protoclo)用户数据包协议
PDU---(protocol data unit)协议数据单元
TCP/IP---(transmissioncontrol protocol/Internet protocol)传输控制协议/网际协议
二、为什么要有OSI
没有OSI:1.是一个整体 2.不兼容3.不利于开发和排错
ISO推出了iOS:1.不是一个整体(分层)2.兼容3.有利于开发和排错
三、OSI模型与TCP/IP模型
1. OSI参考模型
ISO国际标准组织所定义的开放系统互连七层模型的定义和各层功能。建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题。它的最大优点是将服务、接口和协议这三个概念明确地区分开来:服务说明某一层为上一层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务;这样各层之间具有很强的独立性,互连网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以了。
OSI参考模型分为7层,高3层定义了端用户如何进行互相通信;底部4层定义了数据是如何端到端的传输.最高3层,也称之为上层(upper layer),它们不关心网络的具体情况,这些工作是又下4层来完成,OSI参考模型7层结构如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/309136de22af1ee74edac7d40617be9e.png)
应用层---人和电脑相互沟通的桥梁
表示层---定义格式、加密解密、压缩与解压缩
会话层---建立、管理、终止连接
传输层---提供面向连接或非面向连接的数据传递以及重传前的差错检测
网络层---定义逻辑地址,供路由器确定路径,负责将数据从源网络传输到目的网络
数据链路层---将比特组合成帧,使用MAC地址来访问介质,并进行差错检测
物理层---在设备之间传输比特流,规定了电平、速度和电缆针脚等物理特性
可以通过All People Seems To need Data Process来记忆这7层的位置
![](https://i-blog.csdnimg.cn/blog_migrate/2f8a0e9804ce2df581935551e113a38d.png)
2.TCP/IP参考模型
因为OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型。
![](https://i-blog.csdnimg.cn/blog_migrate/204b27691b9e8ef53747c68db815ba6b.png)
TCP/IP协议栈定义了一系列的标准协议。
![](https://i-blog.csdnimg.cn/blog_migrate/412cfed5d5d04b570ee5e228700d2257.png)
2.1应用层
应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。
应用层的PDU被称为Data(数据)。
![](https://i-blog.csdnimg.cn/blog_migrate/65ed0c1583ab7d12d25abafeaae08348.png)
图1-3应用层协议
2.1.1端口号 - 23是端口号,服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号。
2.1.2常见应用层协议 - Telnet:数据网络中提供远程登录服务的标准协议。 Telnet为用户提供了在本地计算机上完成远程设备工作的能力。
![](https://i-blog.csdnimg.cn/blog_migrate/43df2a4e33d96118547b2e6018106915.png)
2.1.3常见应用层协议 - FTP(File Transfer Protocol):一个用于从一台主机传送文件到另一台主机的协议,用于文件的“下载”和“上传”,它采用C/S(Client/Server)结构。
![](https://i-blog.csdnimg.cn/blog_migrate/510aa471b9556333b0507f5825ea2e58.png)
FTP客户端:提供本地设备对远程服务器的文件进行操作的命令。用户在PC上通过应用程序作为FTP Client,并与FTP服务器建立连接后,可以对FTP Server上的文件进行操作。
FTP服务器:运行FTP服务的设备。提供远程客户端访问和操作的功能,用户可以通过FTP客户端程序登录到服务器上,访问设备上的文件。
2.1.4常见应用层协议 - HTTP(HyperText Transfer Protocol):互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法
![](https://i-blog.csdnimg.cn/blog_migrate/f516b0b8c944b18eeb585c1a41a05a76.png)
2.2传输层
传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”(Port to Port)的连接。
传输层的PDU被称为Segment(段)。
![](https://i-blog.csdnimg.cn/blog_migrate/8c56a64b2bf872067d327b7728de9621.png)
2.2.1TCP和UDP – 报文格式
![](https://i-blog.csdnimg.cn/blog_migrate/5c4e7fe2607e015e2af1a92ec4f3d382.png)
2.2.2TCP报文头部:
Source Port:源端口,标识哪个应用程序发送。长度为16比特。
Destination Port:目的端口,标识哪个应用程序接收。长度为16比特。
Sequence Number:序号字段。TCP链接中传输的数据流每个字节都编上一个序号。序号字段的值指的是本报文段所发送数据的第一个字节
的序号。长度为32比特。
Acknowledgment Number:确认序列号,是期望收到对方下一个报文段数据的第1个字节的序号,即上次已成功接收到的数据段的最后一个
字节数据的序号加1。只有Ack标识为1,此字段有效。长度为32比特。
Header Length:头部长度,指出TCP报文头部长度,以32比特(4字节)为计算单位。若无选项内容,则该字段为5,即头部为20字节。
Reserved:保留,必须填0。长度为6比特。
Control bits:控制位,包含FIN、ACK、SYN等标志位,代表不同状态下的TCP数据段。
Window:窗口TCP的流量控制,这个值表明当前接收端可接受的最大的数据总数(以字节为单位)。窗口最大为65535字节。长度为16比
特。
Checksum:校验字段,是一个强制性的字段,由发端计算和存储,并由收端进行验证。在计算检验和时,要包括TCP头部和TCP数据,同时
在TCP报文段的前面加上12字节的伪头部。长度为16比特。
2.2.3TCP和UDP – 端口号:
![](https://i-blog.csdnimg.cn/blog_migrate/9e8d7eeb9ca128b06849d603ef0a2fbe.png)
客户端使用的源端口一般随机分配,目标端口则由服务器的应用指定;
源端口号一般为系统中未使用的,且大于1023;
目的端口号为服务端开启的应用(服务)所侦听的端口,如HTTP缺省使用80。
2.2.4TCP的建立 - 三次握手:任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接。
![](https://i-blog.csdnimg.cn/blog_migrate/8170327b1a129cfcaeac59c53a419cee.png)
TCP连接建立的详细过程如下:
由TCP连接发起方(图中PC1),发送第一个SYN位置1的TCP报文。初始序列号a为一个随机生成的数字,因为没收到过来自PC2的任何报文,所以确认序列号为0 ;
接收方(图中PC2)接收到合法的SYN报文之后,回复一个SYN和ACK置1的TCP报文。初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1;
PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时序列号为a+1,确认序列号为b+1。PC2收到之后,TCP双向连接建立。
2.2.5TCP的序列号与确认序列号:TCP使用序列号和确认序列号字段实现数据的可靠和有序传输。
![](https://i-blog.csdnimg.cn/blog_migrate/14e4fd5cb2f44fec8990e1673abc36b3.png)
假设PC1要给PC2发送一段数据,传输过程如下:
1. PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为“a+1”,第二个字节的序号为“a+2”,依次类推。
2. PC1会把每一段数据的第一个字节的编号作为序列号(Sequence number),然后将TCP报文发送出去。
3. PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确定下一段数据呢?序列号( a+1 )+载荷长度=下一段数据的第一个字节的序号(a+1+12)
4. PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12” ,说明“a+1”到“a+12”这一段的数据已经被接受,需要从“a+1+12”开始发送。
为了提升发送效率,也可以一次性发送多段数据,由接收方统一确认。
2.2.6TCP的窗口滑动机制:TCP通过滑动窗口机制来控制数据的传输速率。
![](https://i-blog.csdnimg.cn/blog_migrate/837e56699e1d834409d57789d688dad6.png)
1. 在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)。
2. 连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。
3. 接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。
4. 接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。
5. 发送方根据接收方当前的Window大小发送相应数量的数据。
2.2.7TCP的关闭 - 四次挥手:当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。
![](https://i-blog.csdnimg.cn/blog_migrate/2ec5d827dcc83ad2207453bdb1967535.png)
TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。
1. 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;
2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。
3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个
FIN置位的TCP报文去关闭连接。
4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。
2.2.8TCP与UDP的比较
![](https://i-blog.csdnimg.cn/blog_migrate/a9c0f9f6fdbf952bd1c6af1abee821db.png)
总结:语音流 视频流对时延要求高 用UDP
要传输可靠的 HTTP 邮件用 TCP
2.3网络层
传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另外一台主机之间的传递。
网络层的PDU被称为Packet(包)。
![](https://i-blog.csdnimg.cn/blog_migrate/604e492bd83424bd3aa9dece3f8cdbca.png)
2.3.1网络层协议工作过程:
![](https://i-blog.csdnimg.cn/blog_migrate/f7086e9a0eb5e5b3b1b6b20ac2fb9a88.png)
当采用IP作为网络层协议时,通信的双方都会被分配到一个“独一无二”的IP地址来标识自己。IP地址可被写成32位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如192.168.1.1。
IP数据包的封装与转发:
网络层收到上层(如传输层)协议传来的数据时候,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中。
中间经过的网络设备(如路由器),会维护一张指导IP报文转发的“地图”——路由表,通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包。
IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。
IP协议工作时,需要如OSPF、IS-IS、BGP等各种路由协议帮助路由器建立路由表,ICMP帮忙进行网络的控制和状态诊断。
2.4数据链路层
数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务。数据链路层的PDU被称为Frame(帧)。
以太网(Ethernet)是最常见的数据链路层协议。
![](https://i-blog.csdnimg.cn/blog_migrate/b02dd5c76199d0dd93bebea462b03c4a.png)
2.4.1以太网与MAC地址
![](https://i-blog.csdnimg.cn/blog_migrate/509ec99ce106fb2c2393268d08ccf827.png)
MAC地址由48比特(6个字节)长,12位的16进制数字组成。例如:48-A4-72-1C-8F-4F
2.4.2ARP(Address ResolutionProtocol)地址解析协议:根据IP地址获取数据链路层地址的一个TCP/IP协议。
![](https://i-blog.csdnimg.cn/blog_migrate/96576bc894cf84b4143b1aca49bcb62f.png)
ARP是IPv4中必不可少的一种协议,它的主要功能是:
将IP地址解析为MAC地址;
维护IP地址与MAC地址的映射关系的缓存,即ARP表项;
实现网段内重复IP地址的检测。
ARP的工作原理 :
![](https://i-blog.csdnimg.cn/blog_migrate/50eb71a87a860d39c1e808213cd1ae9b.png)
Step 1:在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的MAC地址,则直接采用该MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应信息,则通过ARP来获取。
Step 2:主机1通过发送ARP Request报文来获取主机2的MAC地址。由于不知道目的MAC地址,因此ARP Request报文内的目的端MAC地址为0。
Step 3:ARP Request是广播数据帧,因此交换机收到后,会对该帧执行泛洪操作。
Step 4:所有的主机接收到该ARP Request报文后,都会检查它的目的端IP地址字段与自身的IP地址是否匹配。主机2发现IP地址匹配,则会将ARP报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中。
Step 5:主机2通过发送ARP Reply报文来响应主机1的请求。此时主机2已知主机1的MAC地址,因此ARP Reply是单播数据帧。
Step 6:交换机收到该单播数据帧后,会对该帧执行转发操作。
Step 7:主机1收到ARP Reply以后,会检查ARP报文中目的端IP地址字段是否与自己的IP地址匹配。如果匹配,会将ARP报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中。
2.5物理层
数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。
物理层的PDU被称为比特流(Bitstream)。
![](https://i-blog.csdnimg.cn/blog_migrate/db4a29ab55a371ecad0e97632bee83c1.png)
2.5.1常见传输介质
![](https://i-blog.csdnimg.cn/blog_migrate/7e050e7ff16923dd57902ebae3ae5194.png)
双绞线:当今以太网最常见的传输介质,按照抗电磁干扰能力还可以分为:
STP-屏蔽双绞线
UTP-非屏蔽双绞线
光纤传输,按照功能部件可分为:
光纤:光传输介质,简单的说,就是一根玻璃纤维,用于约束光传输的通道。
光模块:将电信号与光信号互转的器件,产生光信号。
串口电缆在WAN(Wide AreaNetwork,广域网)中大规模使用,根据WAN线路类型不同,串口电缆在设备上连接的接口类型也不同:异/同步串口、ATM接口、POS接口、CE1/PRI接口等。
无线信号的传输可以通过电磁波进行,例如:无线路由器将数据通过调制以电磁波发送出去,移动终端的无线网卡将电磁波解调,得到数据,完成从无线路由器到移动终端的数据传输。
想要配套真题和笔记的朋友们点赞+关注,评论区留下邮箱发给你!
四、封装与解封装
4.1PDU
PDU(Protocol Data Unit)协议数据单元:指对等层次之间传递的数据单位。物理层的 PDU是数据位(bit),数据链路层的 PDU是数据帧(frame),网络层的PDU是数据包(packet),传输层的 PDU是数据段(segment),其他更高层次的PDU是数据(data)。
![](https://i-blog.csdnimg.cn/blog_migrate/93bbc49cd10c176222a7d3f34fdbf520.png)
在分层网络结构,例如在开放式系统互联模型中,在传输系统的每一层都将建立协议数据单元(PDU)。PDU包含来自上层的信息,以及当前层的实体附加的信息。然后,这个PDU被传送到下一较低的层。物理层实际以一种编帧的位流形式传输这些PDU,但是由协议栈的较高层建造这些PDU。接收系统自下而上传送这些分组通过协议栈,并在协议栈的每一层分离出PDU中的相关信息。重要的一点是,每一层附加到PDU上的信息,是指定给另一个系统的同等层的。这就是对等层如何进行一次通信会话协调的。通过从传输层段剥离报头,执行协议数据检测以确定作为传输层段的部分数据的协议段的数据,以及执行标志验证和剥离,从而处理数据段。还提供用于处理数据段的技术,其中接收到协议数据单元的报头部分。利用所接收的报头部分来确定将储存在应用空间中的数据的字节数。而且,利用所接收的报头部分来确定下一个协议数据单元的下一个报头部分。然后,发出窥视命令以获得下一个报头部分。另外提供用于利用所储存的部分循环冗余校验摘要和剩余数据来执行循环冗余校验的技术。
4.2各层的设备
![](https://i-blog.csdnimg.cn/blog_migrate/f2e27a920a4bb7949bb582baded6538d.png)
路由器(Router):是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议,因特网使用的TCP/IP协议。
交换机(Switch):意为“开关”是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。
4.3数据通信过程
4.3.1发送方数据封装
![](https://i-blog.csdnimg.cn/blog_migrate/674e3eeea57e4c413655f4650557680d.png)
假设你正在通过网页浏览器访问华为官网,当你输入完网址,敲下回车后,计算机内部会发生下列事情:
1. IE浏览器(应用程序)调用HTTP(应用层协议),完成应用层数据的封装(图中DATA还应包括HTTP头部,此处省略) 。
2. HTTP依靠传输层的TCP进行数据的可靠性传输,将封装好的数据传递到TCP模块。
3. TCP模块给应用层传递下来的Data添加上相应的TCP头部信息(源端口、目的端口等)。此时的PDU被称作Segment(段)。
4. 在IPv4网络中,TCP模块会将封装好的Segment传递给网络层的IPv4模块(若在IPv6环境,会交给IPv6模块进行处理)。
5. IPv4模块在收到TCP模块传递来的Segment之后,完成IPv4头部的封装,此时的PDU被称为Packet(包)。
6. 由于使用了Ethernet作为数据链路层协议,故在IPv4模块完成封装之后,会将Packet交由数据链路层的Ethernet模块(例如以太网卡)处理。
7. Ethernet模块在收到IPv4模块传递来的Packet之后,添加上相应的Ethernet头部信息和FCS帧尾,此时的PDU被称为Frame(帧)。
8. 在Ethernet模块封装完毕之后,会将数据传递到物理层。
9. 根据物理介质的不同,物理层负责将数字信号转换成电信号,光信号,电磁波(无线)信号等。
10. 转换完成的信号在网络中开始传递。
4.3.2中间网络数据传输
封装好的完整数据,将会在网络中被传递。
![](https://i-blog.csdnimg.cn/blog_migrate/972f5ee351b2e8b0c4bd5a87194251da.png)
一般情况下:
网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的“交换”操作。
网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的“路由”操作。
4.3.3接收方数据解封装
![](https://i-blog.csdnimg.cn/blog_migrate/f00799a610683d9fd37334f927d26008.png)
经过中间网络传递之后,数据最终到达目的服务器。根据不同的协议头部的信息,数据将被一层层的解封装并做相应的处理和传递,最终交由WEB服务器上的应用程序进行处理。
五、真题
1.OSI参考模型从高层到底层分别为()
A、应用层 传输层 网络层 数据链路层 物理层
B、应用层 会话层 表示层 传输层 网络层 数据链路层 物理层
C、应用层 表示层 会话层 网络层 传输层 数据链路层 物理层
D、应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
试题答案:D
试题解析:考察OSI七层模型:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层,本题选D。
2.DNS协议的主要作用是()
A、域名解析
B、文件传输
C、远程接入
D、邮件传输协议
试题答案:A
试题解析:答案A为DNS的主要作用、答案B为FTP和TFTP的作用、答案C为telnet的作用、答案C为SMTP的作用。
3.关于OSI参考模型中网络层的功能说法正确的是?
A、在设备之间传输比特流规定了电平、速度和电缆针脚
B、OSI参考模型中最靠近用户的那一层,为应用程序提供网络服务
C、提供面向连接或非面向连接的数据传递以及进行重传前的差错检测
D、将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测
E、提供逻辑寻址,实现数据从源到目的地的转发
4.应用层数据经过数据链路层处理后称为?
A、segment
B、PDU
C、Frame
D、Packet
试题答案:[[‘C']]
试题解析:物理层的PDU为bit,数据链路层为frame,传输层为segment
传输层:segment 段 网络层 packet 包 数据链路层:帧 物理层:位Bit
5.以下关于交换机的描述,说法错误的是?
A、交换机一般作为网络的出口设备
B、交换机一般工作在数据链路层
C、交换机能够完成数据帧的交换工作
D、交换机可以作为终端设备(PC/服务器)提供网络接入服务
试题答案:[[‘A’]]
试题解析:交换设备分为二层交换机和三层交换机,交换设备一般工作在数据链路层,并且能够通过mac地址完成数据帧的交换工作,二层交换一般为终端设备提供接入服务,网络出口设备通常会选择路由器实现不同网络之间的选路及转发工作。
想要配套真题和笔记的朋友们点赞+关注,评论区留下邮箱发给你!