计算机网络知识点汇总

基本概念

什么是计算机网络

计算机网络是将不同地理位置的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。总的来说,就是解决“多台计算机之间如何互相通信”,也就是端到端的通信。

为何使用分层的网络体系结构

分层使层次间相对独立,各层之间不知道下层如何工作,只需知道下层提供的服务接口。

例如两个不同语言的人A讲中文和B将英文需要进行远程的交流,这时我们可以使用翻译,A的翻译员把A说的话翻译成英文让员工用传真之类的方式发送给B,B这边的员工则将收到的信息交给B的翻译员,翻译员则对这个收到的信息进行翻译后说给B听。那么在A和B的翻译员之间翻译时则需要中英文转换的规则,这个规则即为协议,某一层次的协议对其他层次时透明的。

五层体系结构:

应用层:直接为用户的应用进程提供服务,通过网关进行网络互连
运输层:以报文为单位,在两个主机间提供可靠的端到端的服务,通过网关进行网络互连
网络层:以分组为单位,实现数据在不同子网中的传输,通过路由器进行网络互连
链路层:将数据封装成帧,实现透明的无差错传输,通过网桥进行网络互连
物理层:透明地传输比特流,需要考虑如何在不同的传输媒体上传输,通过中继器进行网络互连

在这里插入图片描述

主机间相互通信需要实现的功能

例如现在主机A要向主机B之间要传输一份文件,除了要建立一条传输通路外,
首先主机A要将通信信道进行激活,即保证数据能再这条通路上发送;
第二,要告诉网络如何识别主机B;
第三,主机A要检测主机B有没有开机,网络连接是否正常,是否做好了接受数据的准备;
第四,如果文件不兼容,A或B还需做转换工作;
第五,如果文件传输过程中出现差错需要做相应的处理保障最终收到正确的文件。

主机A如何找到主机B

我们知道每台主机都有唯一的MAC地址,所以可以用MAC地址来寻址(链路层)

如何保证唯一性?
MAC地址为48bit,前24bit为制造商ID,由IEEE统一分配;后24bit是由公司分配的地址部分

如何寻找目的主机B的地址?
但是MAC地址的空间分布,是无规律的而且数量庞大,因此通过MAC地址来寻址非常困难。因此使用IP地址(网络层)

如何找到主机所对于的需要通信的应用进程的地址?
一台主机在同一时刻,可能有多个应用进程需要和多个其他的主机进行通信,因此需要给进程分配端口号来确定主机需要通信的应用进程。例如同时进行网页请求,发送邮件,聊天等,而有的需要确保可靠传输,而有的需要速度快,因此产生了TCP&UDP协议(传输层)
而不同应用,有不同的传输需求比如,请求网页,发送邮件,还有DHCP服务器。为了方便开发者,就对这些常用需求,进行了封装(应用层)

相关概念:

协议数据单元PDU:OSI参考模型为对等层次之间传送的数据单位的命名
实体:任何可以接受或者发送信息的软件进程或者硬件
协议:控制两个对等实体进行通信的规则的集合。(个人理解,就是两个相等层次之间实体通信的规则,例如上述翻译例子中翻译员A和B翻译语言时必须遵守相关的语言规则来进行翻译才能翻译成正确的意思)
在协议控制下,下层向上层提供服务,所以协议是水平的,服务是垂直的

数据传输技术

1.电路交换
什么是电路交换?
从通信资源的分配角度看,交换就是按照某种方式动态分配传输线路的资源。电路交换是电信网中采用的数据交换方式,电路交换时,在双方之间建立一条物理连接,这条连接占用了双方通信所需要的资源,直到通信结束。例如打电话时,需要先进行拨号,接通后,在双方没有挂断电话之前其他人打这个电话时无法接通。
为何不适用于计算机?
在计算机没有数据交换时会浪费资源,而计算机交换数据的特点具有突发性、非连续性。比如打开网站就只想看某电影简介时,并不需要一直连接占用资源。不同规格的终端互连不便,需要协调缓冲机制和转换机制。传输通路上任何一点出现故障则无法通行。
2.报文交换
不需要先建立连接。采用存储转发的技术,即把数据从发送方发送到接收方,中间要经过多个节点的暂时存储。数据较大时时延较长。
3.分组交换
不需要先建立连接。采用存储转发的技术,即把数据进行分组后,从发送方发送到接收方,中间要经过多个节点的暂时存储。
比较:
如下图A D分别为起点和终点,B、D为中间节点。电路交换中,首先建立连接,整个报文连续从源点传输到终点,就像在管道中传输;报文交换中,不需要建立连接,每次先到达相邻节点,整个报文全部存储下来后,查找路由表,然后转发到下一个节点,重复转发过程直到到达终点;分组交换中把报文分成分组,分组的转发和报文类似。
在这里插入图片描述

数据链路层

物理层主要是有关传输比特流、以及信号的转换等,我不是很了解。
数据链路层作用:实现在不太可靠的物理链路上实现可靠的数据传输。
数据链路层的功能:
封装成帧:将网络层传过来的数据进行封装,封装后的数据单元称为帧(交给物理层),即在一段数据的前后分别添加首部和尾部构成帧。
透明传输:将数据中出现的与帧定界符相同的字符进行处理(如字节填充、零比特填充)
差错控制:检验传输过程中出现的比特差错,如0变成1,1变成0

如何在数据链路层进行可靠传输?

停-等协议(可靠传输):
ARQ(自动重传请求)

正常情况:A向B发送数据帧,B收到后向A发送确认帧ACK

数据中出错(帧重复):B收到的数据检测出来有错误,则B向A发送否认帧NAK,则A会重传数据,直到收到确认为止 --差错重传

数据帧丢失(帧丢失):A向B发送的数据丢失了,若B一直等待则会出现死锁,则A可设定计时器,若计时器超时,则A向B重传数据 --超时重传

确认帧丢失(帧失序):B向A发送的确认帧丢失了,若此时A重传则会有重复帧,此时可对每个帧进行编号以确认是否重复

停-等协议的缺点改进:
1.如图,在每个分组传输完直到确认时的信道是空闲的。
在这里插入图片描述

改进停等协议的信道利用率低的缺点,如图采用流水线的思想,使用连续ARQ协议:边发送边接收边确认
在这里插入图片描述
但是在使用连续ARQ协议时,发送方等待确认帧时,并不能无限制发送数据帧,因为发送的数据帧越多,若数据出现错误等,需要重传的数据帧就越多,重复帧的传输开销就会变大,因此需要对发送帧的数量进行限制,使用滑动窗口

滑动窗口协议:对发送发已经发送出去但还没有收到确认的数据帧进行限制,只有在发送窗口中的帧才能发送。

点对点协议PPP:

由于通信线路质量提高,引起差错的概率降低,因此目前数据链路层使用最广泛的是PPP协议。

PPP协议要求:简单、封装成帧、透明传输、支持多种网络层协议、支持多种类型链路、差错检测、检测连接状态(随时检测链路是否处于正常状态)、最大传输单元MTU、网络层协商(使网络层实体知道或配置彼此的网络层地址)、数据压缩协商算法

PPP不需要的功能:纠错(只检错,不纠错)、流量控制、序号(不对帧编号)、多点线路、半双工或全双工通信

组成部分:
一个将IP数据包封装到串行链路的方法
建立、配置和测试数据链路的链路控制协议LCP
支持不同网络层协议的网络控制协议NCP

帧格式和各字段的意义:
F为标志字段,表示一个帧的开始或者结束
A为地址字段,规定为0xFF
C为控制字段,规定为0x03
协议字段区分信息部分的内容
信息字段的长度可变,不超过1500字节
FCS字段表示的是帧检验序列
在这里插入图片描述

PPP协议状态图:PPP链路的起始和终止状态都是图中的静止状态,此时在用户机和ISP的路由器间不存在连接。当用户向ISP发送路由器呼叫时,路由器能检测到载波信号,双方建立物理层连接后进入建立状态,建立链路层的LCP连接。LCP通过请求配置帧协商配置选项,协商结束后就进入鉴别状态,即鉴别双方身份。鉴别成功后进入网络状态,此时PPP链路上通过网络控制协议NCP根据不同的网络控制协议交换特定的网络控制分组,协商网络层相关配置。配置结束后进入打开状态,双方即可相互发送数据。数据发送结束后,一方发送终止请求,就进入终止状态,线路上的载波停止后即回到静止状态。
在这里插入图片描述

局域网的数据链路层

由于在局域网中,它的媒体访问接入的方法太多,因此将数据链路层分成LLC和MAC两个子层,便于简化系统实现。

逻辑链路控制层LLC(LogicalLinkControl)
作用:向上层(网络层)提供连接环境、建立和释放逻辑链路、与高层的接口、差错控制、给帧加减序号、传输访问介质对LLC透明

媒体访问控制层MAC(MediaAccessControl)
作用:对下层(物理层)提供媒体访问方法、负责差错检验(只检验,如何处理差错交给LLC层处理)、寻址、实现和维护MAC协议

局域网地址即MAC地址(48bit):是定义网络设备接口的标识,因此要确保全球唯一性。因此对于不同厂商,则会有不同的制造商ID(前24bit)标识不同厂商制造,由IEEE分配确保唯一性,后24bit由公司自行分配。

以太网:是采用Ethernet协议的一种网络,以太网是相对令牌环而言的,定义了网络中信息传输的模式。那么常说的以太网,是采用EthernetII协议的局域网,局域网内部还可以使用IEEE制定的802.3协议。(参考的https://zhidao.baidu.com/question/569637.html 理解得不是很明白)

对于不同网络之间的数据如何进行传输?
因此需要对局域网进行扩展

扩展的技术:

如果采用HUB(即多端口的中继器)进行扩展:这种扩展不是无限的,要遵循543规则。

早期扩展设备网桥:可以连接多段不同的网络,例如集线器A连接了3个主机(123),集线器B连接了另外3个主机(456),要将这两个网络连接起来,则可将集线器A和集线器B分别连接到网桥的两个端口A、B上。因此网桥内部有个MAC地址表,记录的是端口和MAC地址的对应关系(例如记录了端口A对应123主机,端口B对应456主机),这样在数据传输到网桥时,先查看是否为同一网络再决定进行转发。

目前常采用局域网交换机:相当于多端口的网桥,其余类似。

网络层

何为面向连接的服务?
在通信之前需要建立连接,在通信时需要维护连接,在通信结束后需要释放连接,如打电话

IP协议:尽力传输,无连接(如发短信)协议,即不需要建立连接,则通信双方无法知道对方的状态,因此不可靠。

IP层的主要协议:IP协议、偏下层的ARP协议和RARP协议、偏上层的ICMP协议和IGMP协议

IP地址(32bit):即IP协议的地址,分为网络号和主机号

为何将IP地址划分为网络号和主机号?
这和IP地址的寻址方式有关,IP地址在寻址时首先根据网络号找到相应的网络,然后找到对应网络的主机号。如果网络号少则internet中网络会少,若主机号少则每个网络的所能容纳的主机则会变少

如何分配网络号和主机号的位数?

IP地址的分类:由于网络规模有大有小,因此需要对IP地址进行分类。
A类地址:0, 前8位为网络号,后24主机号(1.0.0.0~127.255.255.255)
B类地址:10, 前16 位为网络号,后16主机号(128.0.0.0~191.255.255.255)
C类地址:110, 前24位为网络号,后8主机号(192.0.0.0~223.255.255.255)
D类地址:1110,多个地址(224.0.0.0~239.255.255.255)
E类地址:11110,保留做未来使用(240.0.0.0~247.255.255.255)
其中ABC三类可分配给主机使用

特殊IP地址:全0表示自己,全1表示所有
分配给主机的IP地址,其主机号不能全“0”
分配给主机的IP地址,其主机号不能全为“1”
主机号全“0”,表某网络的网络号
主机号全“1“,表某网络的广播地址

主机如何判断IP地址的网络号为多少?
即无论对该IP地址做何运算,主机号会清0,而网络号不变;让IP地址与上某个数直接得到网络号,这个数称为子网掩码。

子网掩码:连续若干个二进制1所组成的代码,网络号多少位则有多少位1,主机号位数都为0。因此源主机向目的主机发送数据前,先用子网掩码分别和源主机IP地址以及目的主机IP地址进行与运算,判断是否相同,以确定是否为同一网络。

ARP协议

完成MAC地址向IP地址之间的转换

为何要进行转换?
例如:如果老师在教室中要找他不认识的某个叫张三的人,则第一次时会在教室广播问谁是张三,将张三和他本人对应上。在IP地址类似人名,而MAC主机类似本人,人名可能会有重复,要找到具体某个人,需要将人名和这个本人进行对应。

ARP协议存有ARP cache存放IP地址和MAC地址的对应关系,每次广播得到应答时,就更新ARP cache

ARP协议工作原理:
进行IP地址到MAC地址的转换
首先查找本机的ARP cache,如果存在记录则直接使用
没有,则发送ARP请求报文进行询问
被询问的计算机由于捎带技术的原因,记录下请求方的IP地址-MAC地址,并返回应答
询问的计算机收到应答后,修改本机的cache内容

ARP协议漏洞
原因:ARP协议默认信任广播所得到的应答消息,但可能会被其他主机所截获,冒充目的主机
定义:利用ARP协议漏洞入侵方式
防范:使用静态地址映射IP地址和MAC地址的对应关系,牺牲方便性换取安全性

windows指令:arp -a 获取本机arp cache的值显示最近与本机通信过的主机MAC地址和IP地址对应关系

IP协议

IP协议PDU为IP数据报,如下为IP数据报的格式
在这里插入图片描述
IP分片,由于数据链路层规定了帧的大小MTU(最大传输单元),因此如果IP大于规定的大小,则会将IP数据报进行分片再传输。

IP路由

由于在由路由器所构成的互联网比较复杂,从发送方到接收方所传输的可选路径很多,因此选择最佳路径,即寻路问题。类似于开车从A地到B地,在不知道走哪条路的情况下,路上会有路标,标识下一站是哪里,距离为多少
因此类似的,路由器需要解决的问题为:如何根据路标寻路,如何维护路由表

如何根据路标寻路
类似于路标,存储要到达目的网络时,需要经过的下一个网络的网络号(例如图中路由器直接与网络2,3相连,则路由表中记录的目的网络为2,3的条目对应的下一站则是直接投递,而网络1,4则分别对应的是下一个需要经过网络2,3)
在这里插入图片描述

网关:设备所在网络的默认出口地址
例如图中A、D在不同网络中,C连接的是网络A和右边网络的路由器,B连接的是网络B和右边网络的路由器,主机A需要配置的网关为202.118.19.254,主机D需要配置的网关为202.118.28.254
在这里插入图片描述

传输层

问题引入:
1.通过网络层,用户可以向指定主机发送数据了,但是当前操作系统大多是多任务操作系统,即同一台计算机上可以运行多个进行网络通信的进程,那传输到目的主机的数据是如何精准地交付到目的进程的呢? --进程寻址

2.网络层所提供的服务是不可靠的传输,但平时收到的信息很少出现错误,因此,传输层如何进行可靠传输呢?

数据链路层可以确保可靠传输,为何传输层还需要可靠的传输服务呢?
首先要明白两个概念:点到点的传输和端到端的传输

点到点的传输:即两点之间的传输,例如从主机A到B可能会经过了路由器C之类的其他连接点,那么从A到C则为点到点的传输。数据链路层保证的是点到点的可靠传输

端到端的传输:从主机A到主机B即为端到端的传输,即从源点到目的点。传输层保证端到端的可靠传输。因此,传输层使应用进程无需关心网络层的服务质量,而可以成功的将应用程序从源端进程可靠的投递到目的端进程

TCP协议

作用:为应用进程提供可靠的,端到端的,面向连接的字节流通信,利用网络层IP协议提供的不可靠的分组传输服务,解决分组的重传和排序问题。

TCP协议的性质:
面向连接:发送方在发送数据前要明确接收方的存在,商议传输的一些性质
全双工:TCP连接建立好之后,发送方和接收方可同时互相传输数据
unicast:单波通信,即只支持两个端点之间的通信
面向字节流:

进程寻址:
端口:为了区分多个进程,为每个通信进程进行编号,这个编号就叫做端口,一般为16bit

如何分配端口号?

众所周知端口:全局分配,用于标准服务器,取值小于1024

保留端口号如:FTP21、TELNET23、SMTP25、HTTP80、POP110等

临时端口:本地分配(主机建立连接时操作系统为用户进程动态分配的端口),进程结束后就把端口号还给操作系统,取值大于等于1024。

但是对于临时端口号,如何让通信主机知道自己的临时端口号来进行通信呢?

socket通信:有了端口号,internet中访问唯一进程方法为,首先通过对方的IP地址,访问到对方的主机,然后再根据端口号访问到对方主机的某个进程。socket由端口号和主机IP地址动态绑定形成。

例如FTP应用连接端口时:主机A(client)向主机B(server)请求建立连接,主机B相应的端口为众所周知的端口号21,假设主机A的端口号为操作系统临时分配的端口1234,因此当客户端请求连接服务器端时,将目的主机的端口号设为21,并且将自己的源端口号1234捎带给目的主机ftp服务器,则主机A和主机B即建立了连接可以互相通信。

TCP报文首部格式

在这里插入图片描述
源端口:2字节
目的端口:2字节
序列号:tcp报文端的编号,4字节
确认号:确认已收到的报文和希望收到的下一个报文,4字节
偏移:tcp报文段头部的长度,单位是4字节;如偏移值为10 ,则tcp报文长度为40字节,4bit
保留:6bit
标志:6bit
URG: 紧急指针字段是否有效
ACK:确认号是否有效
PSH:不必缓冲区满即可上传
RST:复位,用于崩溃或错误连接
SYN:用于建立连接的同步序号
FIN:用于断开连接,表示发送方到达数据结尾
窗口:用于拥塞控制时接收端向发送端设置滑动窗口大小
校验和:对整个tcp报文段的校验
紧急指针:数据部分需要被紧急处理的最后一个字节的编号

TCP如何控制流量?–滑动窗口

类似链路层的流量控制原理,发送端有一个发送窗口,可以连续发送多个TCP报文段,只要报文是在滑动窗口中,接收端有一个接收窗口,只有在接收窗口中的报文段,接收端才会成功接收并回复ACK报文给发送端,已经被ACK过的报文段则可从发送窗口移除。

TCP协议在建立和和释放连接时是如何工作的?

建立连接:由于TCP提供的是可靠的端到端的传输服务,因此在通信之前双方打好招呼,确保对方知道自己的存在,为这次通信预留资源,也即建立连接。

解决的问题:如何在网络层提供的不可靠的ip分组投递的基础上使对方明确知道自己的存在并预留资源

三次握手建立TCP连接

在这里插入图片描述

如图主机A向主机B请求建立连接,主机A向主机B发送SYN(SEQ=x)请求建立连接(发送的报文序列号为x)
主机B向主机A回复SYN(SEQ=y,ACK=x+1)(表示收到了x报文,请求下一个报文 y?)
这时可能会发生一个问题,主机B向主机A发送的应答报文可能会丢失,即主机B并不能确定主机A是否能正确收到这个应答报文
因此我们可以使主机A向主机B发送对于主机B的应答报文的应答

释放连接

通信结束后,由发送发和接收方同时释放这次通信的资源,这些资源才能被其他进程使用。
非对称释放
发送释放请求后单方终止连接
有可能丢失对方发送的数据
对称连接
各自独立发送释放连接请求
收到对方的释放确认之后才可释放连接

类似三次握手建立连接的情况
主机A向主机B发送FIN(SEQ=x)请求释放连接
主机B向主机A回复ACK=x+1表明收到请求释放
若FIN为0表示主机B还有数据要发送
若FIN为1则表示同意释放连接
主机A向主机B回复FIN(SEQ=x+1,ACK=y+1)表明已收到回复

UDP协议

作用:为应用进程提供无连接的数据传输服务,由应用层解决差错和丢失等纠错问题
适用场合:
实时数据传输
节省建立/释放连接和重传的开销
保留端口:TFTP69、DNS53、BOOTP67、SUNRPC111等

UDP首部

在这里插入图片描述

应用层

FTP

允许我们在internet范围内上传和下载文件,因此需要一个文件服务器,打开固定端口,等待用户上传和下载文件,同时一些FTP服务用户验证的防止非法上传和下载

工作流程:首先客户端要有一个用户接口,在用户接口,用户提出上传文件或下载文件,然后由用户的协议解析器解析命令是上传还是下载,文件在哪个位置等,这是文件解析器理解了用户的需求,然后按用户要求与文件服务器建立连接,文件服务器会打开21号端口(用于命令传输)等待用户的连接请求,然后在20号端口(用于数据传输)将用户命令进行解析,来到本地文件系统找到对应的文件要上传或下载的位置,再由20号端口与对方建立连接,将数据下载给客户端

WWW

为了数据的检索和共享科学数据,特点就是超链接。
当人们阅读到专业词汇想要进一步了解时,需要快速得到这些词汇的进一步解释,因此出现了超链接。

WWW系统必须解决的问题和工作模型

1.成千上万上亿的WWW网页在整个Internet时如何标识唯一的文档?
URL:是对能从Internet上得到的资源的位置和访问方法的一种简洁的表示
URL格式:<访问方式>://<主机>:<端口>/<路径>

2.如何在异构计算机上展示同一个文档的相同风格?
采用HTML标记语言,使用一种解析器,尽管计算机都是异构的,但是解析出来的风格是相同的。

3.如何实现用户和服务器之间的WWW文档的传递?
采用HTTP协议:超文本传输协议,基于TCP连接

DNS

internet每台主机的唯一标识是IP地址,当我们访问某台主机时,必须要知道它的IP地址才行,但日常中我们都是用主机名字而非地址去访问的,如微软的官网地址,IP地址不一定知道,但一定能用www.microsoft.com访问到它,这是因为internet中提供了DNS协议可以将主机地址和IP进行相互转化的协议。

DNS协议作用:将主机名字转换为二进制IP地址

如何实现这种转换?
若采用单个数据库系统,里面存放所有的域名和IP地址的对应关系,若某客户想知道某个对应关系,则进行查询。但是常有新的域名出现时,则需更新数据库,使得数据库经常处于繁忙状态
因此DNS被设计称为一个联机分布数据库系统,采用客户服务器模式,由若干域名服务器组成

Internet域名结构

采用层次树状结构的命名方法(像全球邮政系统和电话系统)
域名的结构由若干分量组成,各分量之间用点隔开;.qzcy.hb.cn
每一级域名都由英文字母和数字组成(<63个,不分大小写)
级别最低的域名在最左边,最高的在最右边
顶级域名:com,net,org,edu,gov,us,cn,uk
二级域名:cctv,ibm,hp,mot由国家自行确定
三级域名:hust,ice,seu一般是一些单位
域名只是个逻辑概念,并不反映计算机所在的物理地点

DNS查询流程

域名管理规则:每个域名服务器只对域名体系中的一部分进行管辖,在多个小范围的域名服务器之上还应有更高级别的DNS服务器来负责小范围的DNS服务器的协调。小范围的域名服务器称为本地域名服务器,更高级别的称为二级域名服务器或顶级域名服务器。

一次域名查询过程如图所示:一般首先在本地域名服务器查找域名,若不知道,则向顶级查询,若顶级也不知道,但是知道下一级域名服务器的地址,则返回该服务器的地址,于是根据返回的服务器地址向该服务器查询IP地址,查到后则将IP地址返回给客户。
在这里插入图片描述
在这里插入图片描述
观看完mooc上东北大学的计算机网络知识后结合网上资料加上自己的理解整理完成。

参考文章:
https://blog.csdn.net/qq_42468130/article/details/82760291?utm_medium=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.nonecase#差错检测
https://www.zhihu.com/question/19718686
https://zhidao.baidu.com/question/569637.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值