# Computer-Network
**Repository Path**: JxnuHxh/Computer-Network
## Basic Information
- **Project Name**: Computer-Network
- **Description**: 总结计算机网络所学知识
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2020-06-18
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Computer-Network
#### 计算机网络学习的核心内容就是网络协议的学习,计算机网络协议同我们生活中的语言一样,多种多样。
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计 算机网络,
国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即OSI七层模型,
除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议 和 TCP/IP五层协议。
它们之间的对应关系如下图所示:

## OSI七层模型
TCP/IP协议是互联网的基础协议,每一层中都要自己的专属协议,完成自己相应的工作以及与上下层级之间进行沟通。
简要来讲各层作用:
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
#### 1.物理层(Physical Layer)
激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。
该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保
原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,
中继器(Repeater,也叫放大器)和集线器
#### 2.数据链路层(Data Link Layer)
将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,
数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,
在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;
如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;
以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。
数据链路层在不可靠的物理介质上提供可靠的传输。
该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
有关数据链路层的重要知识点:
1. 数据链路层为网络层提供可靠的数据传输;
2. 基本数据单位为帧;
3. 主要的协议:以太网协议;
4. 两个重要设备名称:网桥和交换机。
#### 3.网络层(Network Layer)
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址
和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需
要了解网络中的数据传输和交换技术。如果您想用尽量少的词来记住网络
层,那就是“路径选择、路由及逻辑寻址”。
网络层中涉及众多的协议,其中包括最重要的协议,也是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. 重要的设备:路由器。
#### 4.传输层(Transport Layer)
传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系
统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的
可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。
网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而
传输层则负责将数据可靠地传送到相应的端口。
有关网络层的重点:
1. 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传
输以及端到端的差错控制和流量控制问题;
2. 包含的主要协议:
TCP协议(Transmission ControlProtocol,传输控制协议)
UDP协议(User Datagram Protocol,用户数据报协议)
3. 重要设备:网关。
#### 5.会话层
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。
会话层还利用在数据中插入校验点来实现数据的同步。
#### 6.表示层
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。
表示层的数据转换包括数据的加密、压缩、格式转换等。
#### 7.应用层
是最靠近用户的OSI层,为用户的应用程序提供网络服务的接口。将用户的操作通过应用程序转换成为服务,
并匹配一个相应的服务协议发送给传输层。
会话层、表示层和应用层重点:
1. 数据传输基本单位为报文;
2. 包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)
DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议)
HTTP协议(Hyper Text Transfer Protocol)。
## IP地址分类
IP地址是32位的二进制数值,用于在TCP/IP通讯协议中标记每台计算机的地址。
通常我们使用点式十进制来表示,如192.168.0.5等等。
每个IP地址又可分为两部分。即网络号部分和主机号部分:网络号表示其所属的网络段编号,
主机号则表示该网段中该主机的地址编号。按照网络规模的大小,IP地址可以分为A、B、C、D、E五类。
A类地址:以0开头, 第一个字节范围:0~127(1.0.0.0 - 126.255.255.255);
B类地址:以10开头, 第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);
C类地址:以110开头, 第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);
|类别| 网络号 |占位数| 主机号 |占位数| 用途 |
|A |(以0开头) 1~126 | 8 |0~255 .0~255 .1~254 | 24 |国家级 |
|B |(以10开头) 128~191 .0~255 | 16 |0~255 .1~254 |16 |跨国组织 |
|C |(以110开头)192~223 . 0~255. 0~255 .| 24 |1~254 | 8 |企业组织 |
注意:
1)以下是留用的内部私有地址,Internet上没使用的地址
A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255
2)IP地址与子网掩码相与得到网络号
3)主机号,全为0的是网络号(例如:192.168.2.0),主机号全为1的为广播地址(192.168.2.255)
## ARP地址解析协议的原理
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,
则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,
该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址
3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,
如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中
,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。
如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播(255.255.255.255)发送ARP请求,单播发送ARP响应
## 在浏览器中输入www.baidu.com后执行的全部过程
1、客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48 ,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48
然后通过TCP进行封装数据包,输入到网络层。
2、在客户端的传输层(添加TCP头),把HTTP会话请求分成报文段,添加源和目的端口,
如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,
与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3、客户端的网络层(添加IP头)不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,
期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
4、客户端的链路层(添加MAC头),包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,
然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,
然后发送IP数据包到达服务器的地址。
## TCP和UDP的区别
这是传输层的两个协议,先说一下传输层的两大功能:
复用:在发送端,多个应用进程公用一个传输层;
分用:在接收端,传输层会根据端口号将数据分给不同的应用进程。
传输层和网络层的区别:
网络层为不同的主机提供通信服务,传输层为不同应用进程提供通信服务。
网络层只对报文头部进行差错检测,而传输层对整个报文进行差错检测。
UDP(User Data Protocol)用户数据报协议
无连接
不可靠(不能保证都送达)
面向报文(UDP数据传输单位是报文,不会对数据进行拆分和拼接操作,只是给上层传来的数据加个UDP头或者给下层来的数据去掉UDP头)
没有拥塞控制,始终以恒定速率发送数据
支持一对一、一对多、多对多、多对一
首部开销小,只有8字节
TCP(Transmission Control Protocol)传输控制协议
有连接
可靠的
面向字节流
全双工通信,TCP两端既可以作为发送端也可以作为接收端
连接的两端只能是两个端点,即一对一,不能一对多
至少20个字节,比UDP大的多
什么是TCP连接
TCP连接是一种抽象的概念,表示一条可以通信的链路。
每个TCP连接有且仅有两个端点,表示通信的双方,且双方在任意时刻都可以作为发送者和接受者。
什么是套接字
一条TCP连接的两端就是两个套接字。
套接字 = IP地址 :端口号
因此,TCP连接 = (套接字1,套接字2)= (IP1:端口号1,IP2:端口号2)
## TCP对应的协议和UDP对应的协议
TCP对应的协议:
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5)HTTP:(HTTP,HyperText Transfer Protocol)是从Web服务器传输超文本到本地浏览器的传送协议。
是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
HTTP 协议包括哪些请求?
GET:请求读取由URL所标志的信息。
POST:给服务器添加信息(如注释)。
PUT:在给定的URL下存储一个文档。
DELETE:删除给定的URL所标志的资源。
HTTP 中, POST 与 GET 的区别
1)Get是从服务器上获取数据,Post是向服务器传送数据。
2)Get是把参数数据队列加到提交表单的Action属性所指向的URL中,值和表单内各个字段一一对应,在URL中可以看到。
3)Get传送的数据量小,不能大于2KB;Post传送的数据量较大,一般被默认为不受限制。
4)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
I. 所谓 安全的 意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。
就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
II. 幂等 的意味着对同一URL的多个请求应该返回同样的结果
UDP对应的协议:
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
DNS是域名系统(DomainNameSystem)的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务,
可以简单地理解为将URL转换为IP地址。域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,
在Internet上域名与IP地址之间是一一对应的,DNS就是进行域名解析的服务器。DNS命名用于Internet等TCP/ IP网络中,通过用户友好的名称查找计算机和服务。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
## TCP的三次握手和四次挥手?
seq:"sequance"序列号;ack:"acknowledge"确认号;SYN:"synchronize"请求同步标志;
;ACK:"acknowledge"确认标志";FIN:"Finally"结束标志。
答:建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。
(1)1.TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。
2.TCP连接断开过程:假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:
主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,
顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B
主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,
主机B就一直在等待主机A发送数据,导致主机B的资源浪费。(这就是缺少第三次握手(A再给B确认))
(3)采用两次握手不行,原因就是上面说的实效的连接请求的特殊情况。
为什么要四次挥手?
试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,
并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,
所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证
双方的一个合约的完整执行!
## 交换机、路由器、网关的概念,并知道各自的用途
1)交换机
在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。
交换机的所有的端口都挂接在这条背 部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC
(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部 交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,
交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表 中。
交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,
保存成一张 ARP表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此, 交换机可用于划分数据链路层广播,即冲突域;但它不 能划分网络层广播,即广播域。
交换机被广泛应用于二层网络交换,俗称“二层交换机”。
交换机的种类有:二层交换机、三层交换机、四层交换机、七层交换机分别工作在OSI七层模型中的第二层、第三层、第四层盒第七层,并因此而得名。
2)路由器
路由器(Router)是一种计算机网络设备,提供了路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过 的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),
这称为转 送。路由工作在OSI模型的第三层——即网络层,例如网际协议。
路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。 路由器与交换器的差别,路由器是属于OSI第三层的产品,交换器是OSI第二层的产品(这里特指二层交换机)。
3)网关
网关(Gateway),网关顾名思义就是连接两个网络的设备,区别于路由器(由于历史的原因,许多有关TCP/IP
的文献曾经把网络层使用的路由器(Router)称为网关,在今天很多局域网采用都是路由来接入网络,
因此现在通常指的网关就是路由器的IP),经常在家 庭中或者小型企业网络中使用,用于连接局域网和Internet。 网关也经常指把一种协议转成另一种协议的设备,比如语音网关。
[计算机网络基础知识](https://www.cnblogs.com/maybe2030/p/4781555.html#_label3)