目录
一、计算机网络的定义
1、计算机网络的正式定义
2、计算机网络的分类
3、网络性能参数
二、 计算机网络协议(核心)
1、网络协议的正式定义
2、网络层次划分
「四层网络协议的作用」
TCP/IP五层模型每一层的作用
3、OSI七层网络模型
(1)应用层
(2)表示层
(3)会话层
会话层、表示层和应用层重点:
(4)传输层
有关传输层的重点:
TCP连接的三次握手(重要)
面试常客:
四次挥手
(5)网络层
网络层的作用:
(6) 数据链路层
数据链路层作用
(7) 物理层
物理层的作用
利用通信线路和通信设备,将地理位置不同的、功能独立的多台计算机互连起来,以功能完善的网络软件来实现资源共享和信息传递,就构成了计算机网络系统。
这里的重点是“资源共享”和“信息传递”。
QQ群里面放一个文件,群里的成员都能下载,就是资源共享;
你收到别人发的一条微信,就是信息传递。
计算机网络,按照地理位置可以划分为四类:
局域网、城域网、广域网,个人局域网。
按功能可划分为:对等网络 服务器-客户端
|--广域网(几十到几千公里),WAN(Wide Area Network),涉及几个城市、一个国家、各个国家一个的计算机网络。
我们所说的互联网,也叫因特网,是最大的一个网络,连接了全世界的许多网络,但并不是全部。
|--局域网(1km 左右),LAN(Local Area Network),在较小的地理区域内建立的计算机网络。
例如实验室建一个网络,内部的电脑互联起来,就是一个局域网;
一家公司建一个网络,也是局域网,家里装个路由器,也是一个局域网。在我们手机上,连接WIFI的那个功能,写的是“WLAN”,全称是“Wireless Local Area Networks”,就是“无线局域网”的意思。
|--城域网(5~50KM),MAN(Metropolitan Area Network),若干个局域网互相连接而成,适合于大都市的较大规模的计算机网络。
|--个人局域网(10m左右),(英语:Personal Area Network,缩写为PAN),指个人范围(随身携带或数米之内)的计算 设备 (如 计算机 、 电话 、 PDA 、 数字相机 等)组成的通信网络。 个人网即可用于这些设备之间互相交换数据,也可以用于连接到高层网络或 互联网 。
1. 速率:数据的传送速率,单位是 Bit/s
2. 带宽: 在计算机网络中,网络带宽表示单位时间内网络中某信道所能通过的 “最高 数据率”,单位为 bit/s
3. 吞吐量: 表示在发送端与接收端之间实际的传送数据速率(bit/s)
4. 时延: 指数据从网络的一端传送到另外一端所需的时间。
1. 发送时延:是主机或路由器发送数据帧所需要的时间。公式为:数据帧长度 (bit)/ 发送速率(bit/s)
2. 传播时延:是电磁波在信道中传播一定的距离需要花费的时间。公式为:信 道长度(m)/ 电磁波在信道上的传播速率(m/s)
3. 处理时延:主机或路由器在收到分组时要花费一定的时间进行处理
4. 排队时延:在分组进入路由器后要先在输入队列中排队等待处理
5. 往返时间: 从发送方发送数据开始,到发送方收到来自接受方的确认,总共经历 的时间
6. 信道利用率: 指某信道有百分之几的时间是有数据通过的
1. 信道利用率并非越高越好,因为当利用率增大时,该信道引起的时延也就迅 速增加
7. 互联网的组成(边缘部分与核心部分的作用)
计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数 据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取 的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。
就好比我国地广人多,A地区的地方性语言B地区听不懂,为了实现交流通信,则需要建立一个语言标准即推广普通话。
计算机网络协议多种多样,而ARPA公司与1977年到1979年推出 了一种名为ARPANET的网络协议(实现了不同国家不同地区的通信)受到了广泛的热捧,其中最主要的原因就是它推出 了人尽皆知的TCP/IP标准网络协议。目前TCP/IP协议已经成为Internet中的“通用语 言”,下图为不同计算机群之间利用TCP/IP进行通信的示意图:
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机 网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的 OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层 (Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层 面向用户。
除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP 五层协议,它们之间的对应关系如下图所示:
TCP/IP协议毫无疑问是互联网的基础协议,没有它就根本不可能上网,任何和互联 网有关的操作都离不开TCP/IP协议。不管是OSI七层模型还是TCP/IP的四层、五层模 型,每一层中都要自己的专属协议,完成自己相应的工作以及与上下层级之间进行沟 通。由于OSI七层模型为网络的标准层次划分,所以我们以OSI七层模型为例从下向 上进行一一介绍。
(1) 应用层
为操作系统或网络应用程序提供访问网络服务的接口。规定发送方和接收方必须使用一个固定长度的消息头,消息头必须使用某种固定的组 成,消息头中必须记录消息体的长度等信息,方便接收方正确解析发送方发送的数 据。
应用层旨在更「方便应用从网络中接收的数据」,重点关注 TCP/IP 协议中的HTTP 协议
四层传输层数据被称作「段」(Segments);
三层网络层数据被称做「包」(Packages);
二层数据链路层时数据被称为「帧」(Frames);
一层物理层时数据被称为「比特流」(Bits)。
(2)表示层
Linux给WIndows发包,不同系统语法不一致,如exe不能在 Linux 下执行,shell不 能在Windows不能直接运行。于是需要表示层。解决「 不同系统之间通信语法问题」,在表示层数据将按照网络能理解的方案进行格 式化,格式化因所使用网络的不同而不同。它主要负责数据格式的转换。具体来说,就是讲设备固有的数据格式转换为网络标准 格式。常见的协议有 ASCII、SSL/TLS 等
(3) 会话层
自动收发包,自动寻址。 会话层作用是「负责建立和断开通信连接」,何时建立,断开连接以及保持多久的连 接。常见的协议有 ADSP、RPC 等会话层、表示层和应用层重点:
- 数据传输基本单位为报文;
- 包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、SSH(安 全外壳协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮 局协议),HTTP协议(Hyper Text Transfer Protocol)。
(4) 传输层
第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、 可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。
传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层 之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一 层,信息传送的协议数据单元称为段或报文。
网络层只是根据网络地址将源节点发出的数据包传送到目的结点,而传输层则负责将 数据可靠地传送到相应的端口。
之前所学习的物理层、数据链路层、网络层它们共同解决了将主机通过异构网络互联 起来所面临的问题,实现了主机到主机的通信。
如图所示,局域网1上的主机和局域网2上的主机通过互连的广域网进行通信。网络 层的作用范围是主机到主机。
但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。例如, AP1和AP2是局域网1上这台主机中的,与网络通信相关的两个应用进程。AP3和AP4 是局域网2上这台主机中的,与网络通信相关的两个应用进程。AP是应用进程 application process的缩写。
AP1-4分别为通信双方中的通信进程,假设AP1和AP4之间进行基于网络的通信, AP2和AP3之间进行基于网络的通信,在运输层使用不同的端口来对应不同的应用进 程。然后通过网络层及其下层来传输应用层报文,接收方的应用层通过不同的端口, 将收到的应用层报文交付给应用层中相应的应用进程。这里的端口看不见摸不着,是 用来区分不同应用进程的标识符(通过端口识别数据应该发送给谁)
运输层直接为应用进程间的逻辑通信提供服务,逻辑通信是指,运输层之间的通信, 好像是沿水平方向传送数据,但实际上这两个运输层之间并没有一条水平方向的物理 连接,要传送的数据,是沿着图中上下多次的虚线方向传送的。
有关传输层的重点:
1> 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端 的差错控制和流量控制问题;
2> 包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协 议)、UDP协议(User Datagram Protocol,用户数据报协议);
3> 重要设备:网关
TCP 与 UDP 的区别:
TCP是面向连接的,可靠的字节流服务;UDP是面向无连接的,不可靠的数据报服 务
- TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前 不需要建立连接
- TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失, 不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
- TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报 文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时 应用很有用,如IP电话,实时视频会议等)
- 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交 互通信
- TCP首部开销20字节;UDP的首部开销小,只有8个字节
- TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
TCP连接的三次握手(重要)
TCP保证连接的三个过程
三次握手
第一次:客户向服务器发送连接请求段,建立连接请求控制段(SYN=1),表示传输 的报文段的第一个数据字节的序列号是x,此序列号代表整个报文段的序号 (seq=x);客户端进入 SYN_SEND (同步发送状态);
第二次:服务器发回确认报文段,同意建立新连接的确认段(SYN=1),确认序号字 段有效(ACK=1),服务器告诉客户端报文段序号是y(seq=y),表示服务器已经 收到客户端序号为x的报文段,准备接受客户端序列号为x+1的报文段 (ack_seq=x+1);服务器由LISTEN进入SYN_RCVD (同步收到状态);
第三次:客户对服务器的同一连接进行确认.确认序号字段有效(ACK=1),客户此次的 报文段的序列号是x+1(seq=x+1),客户期望接受服务器序列号为y+1的报文段 (ack_seq=y+1);当客户发送ack时,客户端进入ESTABLISHED 状态;当服务收到客户 发送的ack后,也进入ESTABLISHED状态;第三次握手可携带数据;
我们可以通过网络抓包的查看具体的流程:
比如我们服务器开启80的端口。使用tcpdump来抓包:tcpdump -iany tcp port 80
第一次握手
192.168.198.1客户端访问本地服务器,seq=1767907417(syn=j)
第二次握手
本地服务器回应客户端192.168.198.1,seq 2367096661, ack =1767907418(ack=j+1,seq=k)
第三次握手
客户端192.168.3.1确认接受到本地服务器的信息 ack 1
此时服务器与客户端进入ESTABLISHED状态,开始进行数据传送
面试常客:
为什么需要三次握手?
- 第一次握手:客户发送请求,此时服务器知道客户能发;
- 第二次握手:服务器发送确认,此时客户知道服务器能发能收;
- 第三次握手:客户发送确认,此时服务器知道客户能收。
假设采用两次握手建立连接,客户端向服务端发送了一个SYN包,来请求建立连接, 因为某些未知的原因,并没有到达服务器,在中间某个网络节点产生了滞留,为了建 立连接客户端会重发SYN包,这次数据包正常送达,服务端回复SYN+ACK之后建立 起了连接,但是第一包数据阻塞的网络节点突然恢复,第一包SYN包又送达到服务 端,这时服务端会误认为是客户端又发起了一个新的连接,从而在两次握手之后进入 等待状态,服务端认为是两个连接,而客户端认为是一个连接,造成了状态不一致, 如果在三次握手的情况下,服务端收不到最后的ACK包,自然不会认为连接建立成 功,所以三次握手本质上来说,就是为了解决网络信道不可靠的问题,为了能在不可 靠的信道上建立可靠的连接。
四次挥手
处于连接状态的客户端和服务端都可以发起关闭连接请求,此时需要四次挥手来进行 连接关闭,假设客户端主动发起连接关闭请求,需要向服务端发起一个FIN包,表示 要关闭连接,自己进入终止等待状态,这是第一次挥手,
服务端收到FIN包,发送一包ACK包,表示自己进入了关闭等待状态,客户端进入终 止等待2状态,这是第二次挥手,
服务端此时还可以发送未发送的数据,而客户端还可以接收数据,待服务端发送完数 据后,发送一包FIN包,进入最后确认状态,这是第三次挥手,
客户端收到之后恢复ACK包,进入超时等待状态,经过超时时间后关闭连接,而服务 端收到ACK包后立即关闭连接,这是第四次挥手,
为什么客户端需要等待超时时间,这是为了保证对方已收到ACK包,因为假设客户端 发送完最后一包ACK包后就释放了连接,一旦ACK包在网络中丢失,服务端将一直停 留在最后确认状态
传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。
(5) 网络层
本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选 择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传 输和交换技术。如果您想用尽量少的词来记住网络层,那就是“路径选择、路由及逻 辑寻址”。
网络层的作用:
将数据链路层打包好的数据可靠的,通过最优的路径传输到目的主机
是否可靠传输
数据包在传输的过程中可能出现误码,也有可能由于路由器繁忙而被路由器丢弃,还 有可能出现按序发送的包不能按序到达接收方。如果网络层对上述出现的错误不采取 任何措施,则提供的是不可靠传输服务,反之并使得接收方能正确接收发送方发送的 数据包,提供的是可靠传输服务。
不同网络体系提供的服务可能是不同的。例如,因特网使用的TCP/IP协议体系的网际 层,提供的是无连接的、不可靠的数据包服务。而ATM、帧中继和X.25的网络层, 提供的都是面向连接的、可靠的虚电路服务。
网络寻址问题(通过IP地址寻址)
网络层需要解决的第二个问题是寻址问题。例如,TCP/IP协议体系的网际层使用IP地 址。 下图是网络N1上两个路由器接口各自所分配的IP地址,它们的前三个数是相同的, 可以看作是它们所在网络的网络编号,而第四个数各不相同,用于区分这两个不同的 路由器接口。
这是网络N3上两个路由器接口各自分配的IP地址。它们的前两个数是相同的,可以 看作是它们所在网络的网络编号,而后两个数不完全相同,用于区分这两个不同的路 由器接口。
这是网络N7上两个路由器接口各自分配的IP地址。它们的第一个数是相同的,可以 看作是它们所在网络的网络编号,而后三个数不完全相同,用于区分这两个不同的路 由器接口
总结:
相同的数可以看作是它们所在的网络编号,不同的数是用于区分不同的路由接口
这就是为什么发送数据时最好在同一个网段,前几位一样的话就可以直接找到对应的主机,如果前几位不一样就不能直接找到对应主机,就要经过路由器转发才可以找到。
路由选择问题
如图所示,数据包从源站走到目的站可以走以下青色路径中的其中一种,当然还包含 其他路径;路由器收到数据包后,依据的数据包中的目的地址和路由表决定将数据包从自己的哪个接口转发出去的。
例如,下图记录的是路由器R1的路由表,里面记录者路由器R1所知道的网络,以及 数据包到达这些网络应该从自己的哪个接口转发。假设R1知道数据包要到达网络 N7,下一跳应将其转发给路由R4,则路由表中应该有如下一条记录,而数据包要达 到网络N6,下一跳应将其转发给路由器R2,则路由表中应该有如下记录,
路由器如何得出这样的路由记录呢?
有两种方法: 1、由用户或管理人员设置,适用于规模较小且网络拓扑不改变的小型互联网; 2、实现各种路由选择协议,由路由器执行路由选择协议中所规定的路由选择算法, 而自动得出路由表中的路由记录。适用于规模较大且网络拓扑经常改变的大型互联 网
网络层协议
网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协 议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有: 无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还 有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理 协议IGMP。
具体的协议我们会在接下来的部分进行总结,有关网络层的重点为:
1> 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控 制、网际互连等功能;
2> 基本数据单位为IP数据报;
3> 包含的主要协议:
IP协议(Internet Protocol,因特网互联协议);ICMP协议(Internet Control Message Protocol,因特网控制报文协议);
ARP协议(Address Resolution Protocol,地址解析协议);
RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。
4> 重要的设备:路由器
ICMP主要有两种功能:
ping:一般用于勘测到达目的网络的连通性
traceroute:用于确定ip数据包访问目标所采取的路径
1、Ping
我们知道有时候我们用电脑去ping一个ip地址,去测试一下对这个ip地址之间的连通 性,那么ping是如何进行测试的呢?
Ping的工作过程
- 首先ping命令会先发送一个 ICMP Echo Request(请求包)给对端
- 对端接收到之后, 会返回一个ICMP Echo Reply(应答包)
- 若没有返回,就是超时了,会认为指定的网络地址不存在。
Ping命令简介
Ping命令主要用于检查网络连接及主机是否可达。Ping功能是基于ICMP协议来实现 的:源端向目的端发送ICMP请求(ECHO-REQUEST)报文后,根据是否收到目的端 的ICMP应答(ECHO-RESPONSE)报文来判断目的端是否可达。对于可达的目的 端,再根据发送与接收报文个数、Ping报文的往返的响应时间来判断链路的质量。
Ping命令格式 ping [ -n number ] [ -t ] [ -l number ] [ -f ] [ -a ] ip-address
- -n:ping报文的个数,缺省值为5。
- -t:持续地ping直到人为中断,Ctrl+Break暂时中止ping命令并查看当前的统计结 果,而Ctr+C则中断命令的执行。
- -l:设置ping报文所携带的数据部分的字节数,设置范围从0至65500。
- -f:设置发送的报文不分片,如果报文大于MTU值,则会丢弃该报文。
- -a:反向解析IP地址为主机名。
Traceroute 命令简介
Traceroute命令用于测试数据包从发送主机到目的地所经过的设备,它主要检查网络连 接是否可达,以及分析网络什么地方发生了故障。
traceroute [ -d ] [ -h maximum_hops ] [ -j host-list ] [ -w timeout ] ip-address
-d:不解析主机名。
-h:指定最大TTL的数值。
-j:设定松散源地址路由列表。
-w:用于设置UDP报文的超时时间,单位为毫秒。
显示信息每行包含编号、到达的设备IP地址、3次报文的响应时间。中间部分显示为 “* * *”,说明该节点设备配置不允许ping和tracert。 当网络上出现路由环路时,
使用ping命令只能知道接收端出现超时错误,而tracert 命令能够很容易发现路由环路等潜在问题。在tracert某地址时,多次出现相同的地 址,即可认为出现了路由环路。网络层常见设备
路由器
路由器用于连接多个逻辑上分开的网络,几个使用不同协议和体系结构的网络。路由 器利用网络层定义的“逻辑”上的网络地址(即IP地址)来区别不同的网络,实现网络 的互连和隔离,保持各个网络的独立性。(同网段互相通信,不同网段互相隔离)当一个子网传输到另外一个子网时,可以用 路由器完成。它具有判断网络地址和选择路径的功能,过滤和分隔网络信息流。一方 面能够跨越不同的物理网络类型(DDN、FDDI、以太网等等),另一方面在逻辑上 将整个互连网络分割成逻辑上独立的网络单位,使网络具有一定的逻辑结构。
一句话总结:路由器的主要工作就是为经过路由器的每个IP数据包寻找一条最佳传输 路径,并将该数据有效地传送到目的站点。 路由器的基本功能是,把数据(IP报 文)传送到正确的网络。
(6) 数据链路层
数据链路层在物理层提供的服务的基础上向网络层提供服务, 其最基本的服务是将源自物理层来的 数据 可靠地 传输 到 相邻节点 的目标机网络层。为达到这一目的,数据链 路必须具备一系列相应的功能,主要有: 如何将数据组合成数据块,在数据链路层中 称这种数据块为帧(frame), 帧是数据链路层的传送单位;如何控制帧在物理信道 上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在 两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层作用
数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻 址(从哪里发)、数据的成帧、流量控制(避免堵塞)、数据的检错(校验数据是否有错)、重发(有错就重发)等
数据链路层三个重要问题
帧头存放目标地址和源地址,帧尾存放检错码,中间荷载数据
常用设备
(7) 物理层
传输媒体也称为传输介质或传输媒介,它就是数据传输系统中在发送器和接收器之间 的物理通路。网络传输媒体可分为两大类,即 导引型传输媒体和 非导引型传输媒体。 在导引型传输媒体中,电磁波被导引沿着固体媒体(铜线或光纤)传播。 非导引型 传输媒体就是指自由空间。在非导引型传输媒体中,电磁波的传输常称为无线传输。实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。光纤。这些都是物理层的传输介质。快递寄送过程中的交通工具,就相当于我们的物理层,例如汽车,火车,飞机,船。相比于光纤通信来说,微波仍然具有很多无法替代的优势。例如成本低,抗灾害能力 强等。
需要注意的是,我们通常说有三大传输系统:光纤通信、微波通信、卫星通信。实际 上,卫星通信也是微波通信的一种,只是比较特别而已。
物理层的作用
计算机网络中的物理层就是要解决在各种传输媒体上稳定,可靠的传输比特0和1的问题。进而给 数据链路层提供透明传输比特流的服务。所谓“透明”,是指数据链路层看不见,也无 需看见物理层究竟是用什么方法来传输比特0和1的。