计算机网络考研面试题
一、概述计算机网络的定义计算机网络是多个独立的计算机通过通信线路和通信设备互联起来的系统,以实现彼此之间的数据交换和资源共享计算机网络的组成计算机网络包括边缘部分和核心部分边缘部分:由所有连接在互联网上的主机组成,这部分是用户直接使用,用来通信和资源共享核心部分:由网络和连接这些网络的路由器组成,这部分为边缘部分提供服务计算机网络的分类按作用范围:个人网、局域网、域域网、广域网按网络使用者:公用网
一、概述
计算机网络的定义
计算机网络是多个独立的计算机通过通信线路和通信设备互联起来的系统,以实现彼此之间的数据交换和资源共享
计算机网络的组成
计算机网络包括边缘部分和核心部分
- 边缘部分:由所有连接在互联网上的主机组成,这部分是用户直接使用,用来通信和资源共享
- 核心部分:由网络和连接这些网络的路由器组成,这部分为边缘部分提供服务
计算机网络的分类
按作用范围:个人网、局域网、域域网、广域网
按网络使用者:公用网和专用网
按拓扑结构分类:总线型网络、星型网络、环形网络、网状型网络
按传输介质分类: 有线网、无线网
按交换技术分类:电路交换、报文交换、分组交换
电路交换、分组交换和报文交换的区别
![(img-qGKmOLeb-1616467317267)(D:\考研\Pic\45.png)]](https://i-blog.csdnimg.cn/blog_migrate/08cd7e35614ba5113c4c32cdedaa690d.png#pic_center)
电路交换
整个报文的比特流从源点直达终点,好像在一个管道中进行传送,需要经过建立连接、通话和释放连接三个阶段,最典型的电路交换网络是传统电话网络
报文交换
报文交换采用存储转发技术,节点将报文转发到相邻节点,相邻结点将报文存储下来查找转发表,转发到下一个节点,不需要建立连接,用户可随时发送报文,信道利用率高
分组交换
分组交换采用存储转发技术,每个分组传送到相邻结点,相邻结点将分组存储下来后查找转发表,转发到下一个结点,不需要建立连接,用户可随时发送报文,信道利用率高
有连接服务和无连接服务
面向连接服务是一种可靠的传输,具有连接建立、数据传输和连接释放这三个阶段,传输的数据是有序的,
无连接服务是一种不可靠的传输,通信双方不需要建立连接,资源在数据传输时进行分配,无连接服务比较灵活和快捷,但是数据会丢失、重复和失序
时延由哪几部分构成?
时延是指数据从网络的一段传输到另一端所需的时间,包括发送时延(传输时延)、传播时延、处理时延和排队时延
- 发送时延(传输时延):主机或路由器发送数据帧所需要的时间,就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间
- 传播时延:电磁波在信道中传播花费的时间
- 处理时延:主机或路由器在收到分组后对其进行处理所花费的时间
- 排队时延:分组在进入路由器后在输入队列中排队等待所花费的时间
主机间的通信方式有那些?
- 客户-服务器方式:客户向服务器发送请求,服务器用来处理请求
- 点对点方式:本质上仍然是客户-服务器通信方式,只是通信时每一台主机既是客户机又是服务器
网络体系结构为什么要分层?
- 使得各层之间独立,某一层可以使用下一层的服务而不用知道是如何实现的
- 灵活性好,当某一层发生变化时,这层以上或以下的层都不用改变
- 易于实现和维护
什么是网络协议?网络协议的三要素是什么?
在计算机网络中有条不紊地交换数据需要遵守一些事先约定好的规则,这些规则规定了交换数据的格式以及同步问题,这些规则被称为网络协议,主要由以下三个要素组成:
- 语法:规定数据传输的格式,如网络中 IP 数据报的格式
- 语义:规定所要完成的功能,如主机向服务器发出 GET 请求
- 同步:规定各种操作执行的顺序,如在运输层的 TCP 三报文握手
OSI七层协议、TCP/IP四层协议和五层协议
- OSI七层协议:从上到下包括,应用层、表示层、会话层、运输层、网络层、数据链路层和物理层
- TCP/IP协议:从上到下包括,应用层、运输层、网络层、网络接口层
- 五层协议:从上到下包括,应用层、运输层、网络层、数据链路层和物理层
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ED8SPwO2-1616467317269)(D:\考研\Pic\27.png)]](https://i-blog.csdnimg.cn/blog_migrate/c9c8ab27de580a77e325b959250c153c.png#pic_center)
OSI各层协议的作用
OSI五层协议
- 应用层:报文,通过应用进程间的交互来完成特定的网络应用,应用层的功能包括文件传输,电子邮件服务等
- 运输层:报文段,为不同主机的应用进程提供端到端的逻辑通信,为端到端提供流量控制,差错控制,拥塞控制等服务
- 网络层:IP数据报,将运输层产生的报文段封装成分组进行传输,实现网络中主机到主机的逻辑通信,网络层的功能有路由选择
- 数据链路层:帧,将网络层交下来的 IP 数据报封装成帧,在两个相邻结点的链路上传输
- 物理层:比特,实现比特流的透明传输
OSI七层协议
- 表示层:实现数据压缩、加密、解密等功能
- 会话层:不同主机的各个进程之间进行会话,包括建立、管理和终止进程间的会话
发送端数据的封装过程
- 应用层为数据加上必要的控制信息,使数据成为报文,然后向下传送给运输层
- 运输层将应用层报文加上TCP或者UDP首部,再向下交付给网络层
- 网络层将运输层产生的报文段添加一个IP首部,使之称为IP数据报,再向下交付给数据链路层
- 数据链路层给IP数据报添加一个首部和一个尾部,使之成为数据帧,然后再向下交给物理层
- 物理层将帧看作是比特流,直接发送到另一个网络
二、物理层
什么是信道?包括哪几种通信方式?
信道一般都表示向某一个方向传送信息的媒体,信道包括单工通信、半双工通信和全双工通信
- 单工通信:只有一个方向的通信,没有反方向的通信,如无线电广播或电视广播
- 半双工通信:通信可以在两个方向进行,但是同一时间只能在一方向上通信,如对讲机
- 全双工通信:同一时间有两个方向的通信,该通信传输效率最高
传输介质有哪些?
- 有线:双绞线、同轴电缆、光纤
- 无线:无线电波、微波、红外线、激光
三、数据链路层
链路和数据链路
- 链路:从一个结点到相邻结点的一段物理链路,中间没有其他的交换结点
- 数据链路:把实现通信协议的硬件和软件加到链路上,来控制数据的传输
数据链路层的三个基本问题
这三个基本问题是封装成帧、透明传输和差错检测:
三种可靠传输协议
可靠传输的协议有停止等待协议、滑动窗口协议,后者包括后退N帧协议和选择重传协议
注意:这三种可靠传输实现机制的基本原理并不仅限于数据链路层,可以应用到计算机网络体系结构的各层协议中
停止等待协议
发送方每发送完一个分组就停止发送,等待接收方的确认,只有在收到确认后才会发送下一个分组
滑动窗口协议
发送方和接收方分别维持发送窗口和接收窗口,发送方一次可以发送多个分组,且不必每发一个分组就停下来等待确认,该协议可以加快数据的传输,提高网络吞吐量,滑动窗口协议是TCP 的一种流量控制方法
后退N帧协议
发送窗口 > 1,接收窗口 = 1,发送方一次发送 N 个帧,接收方按序接收无误码的数据分组,并将接收窗口向前滑动,接收方在连续收到几个按序到达的分组后再对最后一个数据分组发送确认,即累计确认
若接收方接收的数据分组出现误码,就丢弃该分组,这就导致后面多个数据分组被丢弃,接收方对之前按序接收的最后一个数据分组发送确认,每丢弃一个数据分组,就发送一个ACK4,发送方收到重复的 ACK4 时,就知道之前所发送的数据分组出现了差错,于是可以不等超时计时器超时就立刻开始重传
选择重传协议
发送窗口 > 1,接收窗口 > 1,发送方一次发送 N 个帧,接收方不按序接收,不累计确认,对无误码的数据分组进行确认,同时接收窗口向前移动
若接收方接收的数据分组出现误码,只对正确接收的数据分组逐一确认,若发送方在超时计时器到期时仍没有收到出现误码的那个分组的确认,则会重传出现误码的数据分组,接收方收到该数据分组后,向发送方发送确认
广域网和局域网的区别
| 广域网 | 局域网 |
|---|---|
| 广域网很广,通常跨区域 | 局域网较小,通常在一个区域 |
| 占网络层、数据链路层和物理层 | 占数据链路层和物理层 |
| 强调资源共享 | 强调数据传输 |
什么是PPP协议?
即点对点协议,是一种不可靠的协议,它的特点是简单,能够检测差错,但不纠正差错,不需要设置序号,不需要进行流量控制
什么是介质访问控制?
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H5s3SCFx-1616467317273)(D:\考研\Pic\2.png)]](https://i-blog.csdnimg.cn/blog_migrate/73413ad507af216ccc899fe232329c07.png#pic_center)
静态划分信道
静态划分信道就是使用多路复用技术,多路复用技术是指把多个信号组合在一条物理信道上进行传输,使得多个计算机共享信道资源,提高信道利用率,包括频分复用、时分复用、波分复用和码分复用
- 频分复用:频分复用是将带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带,频分复用的用户在同样的时间占用不同的频带
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7SU2U5ET-1616467317280)(D:\考研\Pic\28.png)]](https://i-blog.csdnimg.cn/blog_migrate/7471ad0bae0e49076c57a4a129f3bc64.png#pic_center)
-
时分复用:时分复用是将时间划分为几段等长的时分复用帧,用户在每个 TDM 帧中占用固定序号的时隙,时分复用的用户在不同的时间点占用相同的频带宽度
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AzcqQ8wg-1616467317282)(D:\考研\Pic\29.png)]](https://i-blog.csdnimg.cn/blog_migrate/ae9174b8da8075cfee0da59291180f9a.png#pic_center)
-
波分复用:波分复用实则是光的频分复用
-
码分复用:每个用户在相同时间,使用相同的频带进行通信
动态分配信道
动态分配信道是指所有用户可以随机发送信息,发送时占全部带宽,当有多个用户同时发送信息时,就会在信道上产生碰撞,因此需要用一定的协议来避免碰撞,包括 ALOHA 协议、CSMA 协议、CSMA/CD 协议、CSMA/CA 协议
CSMA/CD协议(适用于总线型局域网)
CSMA/CD 全称为“载波监听多点接入/碰撞检测”,用于广播信道(局域网)的随机访问控制协议
每一站在数据发送前都要检测信道上是否有其他计算机在发送数据,如果没有则直接发送数据,如果有要等到信道空闲在发送数据。每一站在发生数据的同时也会监听信道上是否发生碰撞,如果发生了,则采用二进制退避算法来计算重传的时间,然后再次重发
CSMA/CA协议(适用于无线局域网)
CA(Collision Avoid):碰撞避免(并非完全避免,而是尽可能避免)
实现CA的三种机制:预约信道、ACK帧、RTS/CTS帧
轮询访问介质访问控制
在轮询访问中,用户不能随机的发送信息,而是以循环的方式轮询访问每一个结点,当某个结点使用信道时,其他结点不可以使用信道
什么是MAC地址?和IP地址的区别是什么?
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHnEIpuE-1616467317284)(D:\考研\Pic\46.png)]](https://i-blog.csdnimg.cn/blog_migrate/f606b5522b3e2f7e29d308b6bc50e647.png#pic_center)
MAC 地址称作硬件地址,在数据链路层及以下使用,每个网络适配器都有全球唯一的 MAC 地址,两个主机进行通信时,网络层将 IP 数据报向下交给数据链路层,然后被封装成 MAC 帧,MAC 地址被放在 MAC 帧的首部
IP 地址在网络层及以上层使用,不是唯一的,IP 地址放在 IP 数据报的首部
IP 数据报封装成数据链路层的 MAC 帧后,在数据链路层看不见数据报的 IP 地址
网桥和交换机
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-90kpGieh-1616467317286)(D:\考研\Pic\30.png)]](https://i-blog.csdnimg.cn/blog_migrate/3f3b855658f6ef46c424eb5f7be77e0a.png#pic_center)
网桥
- 网桥是扩展以太网(局域网)的一种方法,工作在数据链路层
- 网桥可以对收到的 MAC 帧进行转发和过滤
- 当网桥收到一个帧时,先检查帧的目的 MAC 地址,然后再确定将该帧转发到哪一个接口,或把它丢弃
交换机
- 以太网交换机就是一个多接口的网桥
- 以太网交换机有多个接口,每个接口都与一台主机或另一个以太网交换机相连,一般是全双工通信
- 以太网交换机可以对收到的 MAC 帧进行转发
- 以太网交换机是一种即插即用设备,其内部的帧交换表是通过自学习算法自动建立起来的
以太网交换机收到主机发来的帧后,在帧交换表中查找帧的目的 MAC 地址对应的接口号,若数据帧的 MAC 地址在查找表里,则直接按接口号进行转发;若 MAC 地址不在查找表里,则将该地址加入查找表,并将数据帧发送给相应的数据端口
四、网络层
数据报服务和虚电路服务的区别
| 数据报服务 | 虚电路服务 |
|---|---|
| 传输前不需要建立连接 | 传输前要建立连接 |
| 每个分组独立进行路由转发 | 所有分组按同一路由进行转发 |
| 不保证有序到达 | 保证有序到达 |
网络层的特点
网络层向上只提供无连接的、不可靠、尽最大努力交付的数据报服务,所传送的分组可能出错、丢失、重复和失序,如果主机中的进程间的需要可靠的通信,就由主机中的运输层负责
IPV4和IPV6的位数
IPV4是32位;IPV6是128位
什么是ARP协议?工作流程是怎么样的?
ARP 协议是将主机/路由器的 IP 地址解析为数据链路层的 MAC 地址
ARP 协议找到 MAC 地址的工作流程:
- 当主机 A 要向本局域网上的主机 B 发送 IP 数据报时,需要在 ARP 高速缓存中查看有没有主机 B 的 IP 地址
- 如果有则在 ARP 高速缓存中查出其对应的 MAC 地址,再把该地址写入 MAC 帧
- 如果没有,主机 A 就在本局域网上广播发送一个 ARP 请求分组,本局域网上的所有主机都能够收到该请求,主机 B 收到该请求后,若主机 B 的 IP 地址与 ARP 请求分组的 IP 地址一致,就向主机 A 单播发送一个 ARP 响应分组,该分组中有自己的 MAC 地址,主机 A 在收到主机 B 发来的 ARP 响应分组后,就将主机 B 的 MAC 地址放入主机 A 的 ARP 高速缓存
ARP高速缓存:每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机/路由器的 IP 地址到硬件地址的映射表
由于 ARP 协议用于解决同一个局域网上的主机/路由器的 IP 地址和硬件地址的映射问题,如果源主机和目标主机不在同一个局域网上,则源主机先通过 ARP 找到局域网上的一个路由器的硬件地址,将分组发送给这个路由器,该路由器再找到下一跳路由器的硬件地址,再把分组转发到下一个路由器,直到路由器和目的主机在同一个局域网上,路由器采用同样的方法获取目的主机的硬件地址,最终将分组交付到目的主机
如何对子网进行分组转发?
对子网进行分组转发的过程如下:
- 从收到的数据报的首部提取目的 IP 地址 D
- 先判断能否进行直接交付,将源主机的子网掩码和目的地址相与,看结果是否和源主机所在网络一致,若一致,说明源和目的主机在同一子网,并进行直接交付(将数据报直接交付给目的主机),否则,执行3
- 若路由表中有目的地址为 D 的特定路由,则把数据报传给路由表中指明的下一跳路由器,否则,执行4
- 对路由表中的每一行,用其中的子网掩码与 D 相与,结果为 N,若 N 与目的地址相同,则把数据报传给该行指明的下一跳路由器,否则,执行5
- 若路由表中有一个默认路由,则把数据报传给路由表中指明的默认路由器,否则,执行6
- 报告分组出错
在得到下一跳路由器的 IP 地址或者直接交付时,不是直接将该地址填入待发送的数据报,而是先将 IP 地址转换为 MAC 地址,将其装入 MAC 帧首部,最终封装成一个帧然后再发送出去
什么是ICMP?
网际控制报文协议,在网络层使用,主机或路由器使用 ICMP 可以报告差错,提高 IP 数据报交付的成功率,ICMP 常应用于 ping,用来测试两台主机之间的连通性
ICMP 报文加上 IP 首部组成 IP 数据报,ICMP 报文分为 ICMP 差错报告报文和 ICMP 询问报文
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZWRCIoHc-1616467317289)(D:\考研\Pic\31.png)]](https://i-blog.csdnimg.cn/blog_migrate/e4f6e0e646b26049d3bce0665ae09d36.png#pic_center)
路由器的主要功能有哪些?
路由器的主要功能分为路由选择和分组转发
- 路由选择:路由器根据选路由选择协议构造出路由表,并经常和相邻路由器交换路由信息,不断更新和维护路由表
- 分组转发:路由器收到 IP 数据报后,查找转发表,然后将 IP 数据报从合适的端口转发出去
路由器工作原理
路由器是一种具有多个输入输出端口的专用计算机。路由器某个输入端口收到分组,根据该分组的目的地址,把分组从路由器的某个输出端口转发给下一跳的路由器
路由选择协议
互联网采用分层次的路由选择协议,路由选择协议分为内部网关协议 IGP 和外部网关协议 EGP
- 内部网关协议:在一个自治系统内部使用的路由选择协议,包括 RIP 和 OSPF
- 外部网关协议:在两个自治系统间使用的路由选择协议,包括 BGP
路由选择协议RIP
RIP 是一种基于距离向量的路由选择协议,使用跳数来衡量从源地址到目的地址的路由距离,每经过一个路由器跳数就加 1,每个路由器和自己相邻的路由器交换自己整个路由表的信息,每隔 30s 交换一次
优点:实现简单,开销小,适用于小规模网络
缺点:
- 限制了网络规模,它能使用的最大距离是 15
- 路由器之间交换的是完整的路由信息,随着网络规模的扩大,开销也就增加
- 坏消息传播得慢
距离向量指自治系统内的每一个路由器都要维护从它自己到 AS 内其他每一个网络的距离记录
最短开放路径OSPF
OSPF 是使用分布式的链路状态协议,路由器和自治系统中的所有路由器交换信息,信息是与本路由器所有相邻路由器的链路状态,只有当链路状态发生变化时才会交换信息
优点:支持大规模的网络
缺点:配置复杂
边界网关协议BGP
BGP 采用路径向量路由选择协议,是不同自治系统路由器之间交换路由信息的协议,只能力求寻找一条能够到达目的网络比较好的路由
什么是VPN?什么是NAT?
虚拟专用网 VPN
由于 IP 地址紧缺,一个机构能够申请到的 IP 地址数远小于地构拥有的主机数,同时考虑到互联网并不安全,机构也不会把所有主机都接入到外部因特网
因此,设置一些专用地址,用于机构内部的通信,专用地址只能用作本地地址而不能用于全球地址,有些机构分布在世界各地,为了访问机构内部的网络,就需要使用虚拟专用网,公用网作为专用网的通信载体![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v6c3ZTav-1616467317291)(D:\考研\Pic\17.png)]](https://i-blog.csdnimg.cn/blog_migrate/dd3a3766e153de41cdddb99b45fe6a1c.png#pic_center)
NAT
NAT 用来进行网络地址转换,如果专用网内的主机要和互联网上的主机通信,就需要进行地址转换
在专用网连接到互联网的路由器上安装 NAT 软件,变为 NAT 路由器,路由器中至少有一个有效的全球 IP 地址,专用网的主机和外部进行通信时,要在 NAT 路由器上将本地地址转换成全球 IP 地址,然后和全球的互联网连接
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OzE4aEXR-1616467317292)(D:\考研\Pic\18.png)]](https://i-blog.csdnimg.cn/blog_migrate/19456f6b3c2dd7de61af94e0029ecb82.png#pic_center)
五、运输层
运输层和网络层的区别
运输层向它上面的应用层提供通信服务,为不同主机的应用进程提供端到端的逻辑通信,而网络层提供主机到主机的逻辑通信
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r9B5TV6g-1616467317294)(D:\考研\Pic\20.png)]](https://i-blog.csdnimg.cn/blog_migrate/0ee06a2c135e1080a9e170c377917cb8.png#pic_center)
运输层端口的作用
运输层使用端口号来区分应用层的不同进程,当运输层收到网络层交上来的数据报时,就能根据首部中的目的端口号将数据交付给应用层的目的进程
TCP和UDP的对比
TCP 和 UDP 是运输层中的两个重要协议
| UDP | TCP |
|---|---|
| 无连接协议,发送数据前不需要建立连接 | 面向连接协议,发送数据前需要建立连接 |
| 提供最大努力交付,不提供可靠传输 | 提供可靠传输,发送的数据无差错、不丢失、不重复并且按序到达 |
| 没有拥塞控制 | 支持拥塞控制 |
| 支持一对一、一对多、多对一和多对多的交互通信 | 只能是一对一的通信 |
| 用于IP 电话,实时视频会议等(对网络通讯质量要求不高) | 用于万维网、电子邮件、文件传输等(对网络通讯质量要求较高) |
TCP如何保证可靠传输?
TCP 使用校验号、序号、确认和重传来保证可靠传输
什么是流量控制和拥塞控制?
流量控制
如果发送方发送数据较快,接收方接收数据较慢,就会出现传输错误,流量控制就是让发送方的发送速率不要太快,让接收方来得及接收。可以使用停止等待协议和滑动窗口机制来实现流量控制
拥塞控制
对网络中某一资源的需求超过了该资源所能提供的部分,网络的性能就会变坏,这就是拥塞,此时整个网络的吞吐量会随着输入负荷的增大而下降
拥塞控制就是防止过多数据注入到网络,使网络中的路由器不致过载,可以采用开环控制和闭环控制这两种方法
TCP拥塞控制方法有那些?
TCP 拥塞控制方法有四种,包括慢开始、拥塞避免、快重传和快恢复
拥塞控制也叫做基于窗口的拥塞控制,发送方维持了一个叫做拥塞窗口 cwnd 的状态变量,拥塞窗口的大小取决于网络的拥塞程度,并且可以动态地发生变化,发送方让自己地发送窗口等于拥塞窗口
慢开始和拥塞避免
- 一开始发送方设置 cwnd = 1,ssthresh = 16(慢开始门限),每经过一个传输轮次,拥塞窗口 cwnd 就会加倍
- 当 cwnd = ssthresh 时,改用拥塞避免算法,该算法让 cwnd 按线性规律缓慢增长,每经过一个传输轮次,cwnd 就会加 1
- 当 cwnd = 24 时,网络出现超时,发送方判断为网络拥塞,于是将 ssthresh 调整为 24 / 2 = 12,同时设置拥塞窗口 cwnd = 1,进入慢开始阶段,但 cwnd = 12 时,采用拥塞避免算法,拥塞窗口按线性规律增大
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K9KQlKuT-1616467317296)(D:\考研\Pic\21.png)]](https://i-blog.csdnimg.cn/blog_migrate/9bd2c951a99189fa4572f83b7c07c519.png#pic_center)
快重传和快恢复
- 快重传算法规定,发送方只要一连收到 3 个重复确认,就知道接收方确实没收到报文段,因此应当立即开始重传,而不是等待报文段的计时器超时后再重传
- 发送端收到连续 3 个重复确认后,就知道只是丢失了个别报文段,于是不启动慢开始算法,而执行快恢复算法,发送方将 ssthresh 的值和 cwnd 的值调整为当前窗口的一半,然后执行拥塞避免算法
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IiT1FOP5-1616467317298)(D:\考研\Pic\22.png)]](https://i-blog.csdnimg.cn/blog_migrate/c4f44e3fc38e5196f18445a89cb75af1.png#pic_center)
TCP三报文握手的过程
TCP 建立连接的过程称为握手,由于需要在客户和服务器之间交换三个 TCP 报文段,因此叫做三报文握手,三报文握手的过程如下![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oI5sMUX8-1616467317299)(D:\考研\Pic\23.png)]](https://i-blog.csdnimg.cn/blog_migrate/3325f13ebbb40fad879fed44a7ad1659.png#pic_center)
最开始
一开始,服务器创建传输控制块 TCB,然后进入 LISTEN 状态,准备接受客户的连接请求,客户也创建 TCB,准备向服务器发出连接请求报文段
第一次握手
客户向服务器发出请求连接报文,该报文
- 同步位 SYN = 1,表明这是一个 TCP 连接请求报文段(SYN = 1 表示这是一个连接请求或连接接受报文)
- 初始序号 seq = x,客户进程进入 SYN-SENT(同步已发送) 状态
请注意:TCP 规定 SYN 被设置为 1 的报文段不能携带数据,但要消耗掉一个序号
第二次握手
服务器收到请求连接报文段后,如果同意建立连接,则向客户发送确认报文段,该报文段
- 同步位 SYN = 1,ACK = 1,表明这是一个 TCP 连接接受报文段
- 确认号 ack = x + 1,这是对客户初始序号的确认
- 初始序号 seq = y,服务器进入 SYN-RCVD(同步已收到)状态
请注意:TCP 规定 SYN 被设置为 1 的报文段不能携带数据,但要消耗掉一个序号
第三次握手
客户收到服务器的确认报文后,还要向服务器发出确认报文
- 确认号 ACK = 1,表明这是一个 TCP确认报文段
- 确认号 ack = y + 1,这是对服务器初始序号的确认
- 序号字段 seq = x + 1,因为客户发送的第一个 TCP 报文段的序号为 x,所以它发送的第二个报文段的序号为 x + 1
握手结束
此时 TCP 连接已经建立,客户进入 ESTABLISHED(已建立连接)状态,服务器收到的确认后,也进入 ESTABLISHED(已建立连接)状态
为什么不采用TCP两报文握手?
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nBMzLgNl-1616467317301)(D:\考研\Pic\24.png)]](https://i-blog.csdnimg.cn/blog_migrate/c3003d9475fdc6f50161704146845ab3.png#pic_center)
为了防止已失效的连接请求报文段传到服务器而产生错误,情况如下:
- 客户向服务器发出连接请求,因为某些原因没有收到确认,客户又向服务器重传一次连接请求,因为采用两次报文握手,客户收到确认后,TCP 连接就建立了,然后客户向服务器传输数据,最后释放了连接
- 如果客户发出的第一个 TCP 请求连接报文并没丢失,只是在某个网络节点上发生滞留,导致在连接释放以后的某个时间才到达服务器,服务器在收到该失效的报文后,误以为这是客户发出的一个新的连接请求,于是就向客户发出确认,因为采用两次报文握手,此时新的连接就已经建立
- 但是客户因为处于关闭状态,而不会向服务器发送数据,而服务器却一直等待客户发来数据,TCP 连接一直存在,导致服务器的很多资源就被白白浪费了
TCP四报文挥手释放连接的过程
TCP 连接释放需要在客户和服务器之间交换四个 TCP 报文段,因此也称为“四报文挥手”,四报文挥手的过程如下
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W1pRyBM0-1616467317303)(D:\考研\Pic\25.png)]](https://i-blog.csdnimg.cn/blog_migrate/663cfcff675bf119d05ee4ecf777efd6.png#pic_center)
最开始
客户和服务器都处于连接状态
第一次握手
客户向服务器发出释放连接的报文段,该报文段
- 终止位 FIN = 1,表明发送方数据传输完毕
- 序号字段 seq = u,u 是客户端已传送过的数据的最后一个字节的序号 + 1
- 此时 TCP 客户进程进入 FIN-WAIT-1(终止等待 1)状态,并等待服务器进程的确认
请注意:TCP 规定终止位 FIN 等于 1 的报文段不携带数据,但是要消耗一个序号
第二次握手
服务器在收到连接释放的报文段后,发送一个 TCP 确认报文段,该报文段
- 确认号 ACK = 1,表明这是一个 TCP 确认报文段
- 确认号 ack = u + 1,这是对 TCP 连接释放报文段的确认
- 序号 seq = v,v 是服务器已传送过数据的最后一个字节的序号 + 1
- 此时服务器进入 CLOSE-WAIT(关闭等待)状态
此时 TCP 连接处于半关闭状态,客户已经没有数据要发送了,如果服务器还有数据要发送,客户仍要接收
客户收到确认报文后就进入 FIN-WAIT-2(终止等待 2)状态,等待服务器的连接释放报文
第三次握手
服务器向客户端发送连接释放报文,该报文段中
- 终止位 FIN = 1,表明这是一个 TCP 连接释放报文段
- 确认位 ACK = 1,表明这是一个 TCP 确认报文段
- 确认号 ack = u + 1,这是对之前收到的 TCP 连接释放报文段的重复确认
- 序号 seq = w,这是因为在半关闭状态下,服务器可能又发送了一些数据
- 此时服务器就进入 LAST-ACK(最后确认)状态,等待客户端的确认
第四次握手
客户端收到 TCP 连接释放报文段后,必须对此发送 TCP 确认报文,该报文段中
- 确认位 ACK = 1,表明这是一个 TCP 确认报文段
- 确认号 ack = w + 1,这是对 TCP 连接释放报文段的确认
- 序号 seq = u + 1,因为客户之前发送的 TCP 连接释放报文段要消耗一个序号
- 客户进入 TIME-WAIT(时间等待)状态,服务器进入 CLOSED 状态
客户此时还是没有被释放掉,必须经过时间等待器设置的 2MSL 后才可以进入 CLOSED 状态,MSL 称为最长报文段寿命
为什么客户A在TIME-WAIT状态必须等待2MSL的时间?
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RGOOHJ6x-1616467317305)(D:\考研\Pic\26.png)]](https://i-blog.csdnimg.cn/blog_migrate/9d352f6ebc5cffe04df5d518b16b5c2d.png#pic_center)
第一,为了保证客户发送的最后一个 TCP 确认报文段能够到达服务器
若客户的最后一个确认报文段丢失,此时服务器收不到该确认报文段,则会重传之前的那个报文段,若客户需要等待 2MSL 时间,就能在这个时间内收到服务器发来的重传报文,然后再重传确认一次,并重新启动 2MSL 计时器,最终客户与服务器都能正常进入 CLOSED 状态。若客户不等待 2MSL 时间,而是在发完确认报文段后立即释放连接,就无法收到重传的报文段,因此也无法发送最后一个确认报文段,这样服务器就无法正常进入 CLOSED 状态
第二,使本次连接时间内产生的所有报文段都从网络中消失
这样下一次新的连接中就不会出现旧的连接请求报文段了
六、应用层
DNS
DNS 是域名解析系统,能将域名解析为 IP 地址,DNS 报文使用 UDP 协议对数据报进行封装,使用 53 号端口
当主机需要解析域名时,会在 DNS 高速缓存中查找域名对应的 IP 地址,如果没有找到,就会向网络中某台 DNS 服务器查询,DNS 服务器收到 DNS 查询报文后,在其数据库中进行查询,然后将对应的 IP 地址发给用户主机
域名解析有两种方式:递归查询和迭代查询。
DHCP
DHCP 是动态主机配置协议,当把客户主机的 IP 地址设置为动态获取方式时,DHCP 服务器就会根据 DHCP 协议给主机分配 IP 地址,使得主机能够利用这个 IP 上网
DHCP 使用客户-服务器方式,需要 IP 地址的主机启动时向 DHCP 服务器广播发送发现报文,这时主机成为 DHCP 客户,本地网络上的所有主机都能收到此广播,但只有 DHCP 服务器才回答此广播报文,回答报文称为提供报文,该报文会提供 IP 地址等配置信息
FTP
FTP 是文件传输协议,用户可以在本机上接收或传输远程主机的文件,FTP 使用两个并行的 TCP 连接来传输文件:
- 控制连接(持久):21 号端口,在整个会话期间一直保持打开,在两主机间传输用户标识、口令等控制信息
- 数据连接(非持久):20 号端口,只有在文件传输时才建立数据连接,传输结束就关闭
电子邮件
电子邮件系统采用客户/服务器方式
电子邮件系统的三个主要组成是:用户代理,邮件服务器和电子邮件所需的协议,邮件协议包括
- SMTP:是一种“推”协议,将邮件从发送方邮件服务器传送到接收方邮件服务器,该协议使用 TCP 可靠传输服务
- POP3:是一种“拉”协议,用户将邮件从接收方服务器中下载下来,不允许用户在邮件服务器上管理自己的邮件,该协议使用 TCP 可靠传输服务
- IMAP:是一种“拉”协议,用户在自己的计算机上就可以操控邮件服务器中的邮件,就像在本地操控邮件一样,IMAP 是一种联机协议,该协议使用 TCP 可靠传输服务
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eF1ZHJos-1616467317307)(D:\考研\Pic\37.png)]](https://i-blog.csdnimg.cn/blog_migrate/991c347e007ef95b97aabd5f8f1f349e.png#pic_center)
用户代理发送邮件的过程是:
- 发送方运行用户代理,使用 SMTP 协议将邮件发送到邮件服务器
- 发送方邮件服务器将邮件存放在邮件缓存队列中,等待发送到接收方邮件服务器
- 发送方邮件服务器与接收方邮件服务器建立 TCP 连接,发送方服务器将队列中的邮件依次发送到接收方邮件服务器
- 接收方邮件服务器收到邮件后,将邮件放入收件人的邮箱中,等待收件人取走
- 收件人运行用户代理,然后使用 POP3 协议取走邮件服务器中的邮件
HTTP
HTTP 协议是应用层协议,使用 TCP 可靠传输,HTTP 服务器不保存客户的任何信息(通常使用Cookie跟踪用户的活动,Cookie由服务器产生,存储在用户主机中),因此是个无状态协议
HTTP 的连接方式包括非持续连接和持续连接
- 非持续连接:每次客户和服务器通信都需要建立 TCP 连接,客户在收到服务器发来的消息后,TCP 连接就会立即断开
- 持续连接:客户和服务器建立 TCP 连接,客户在收到服务器发来的消息后,依然保持连接,客户和服务器可以在这条连接上继续传输 HTTP 请求和响应报文
Cookie
由于 HTTP 是无状态协议,为了服务器能够识别用户,便有了 Cookie,Cookie 的执行过程如下:
- 当客户端访问某个网站时,服务器会为用户创建一个 ID,保存在数据库中,然后返回一个 HTTP 响应报文,该报文包含 Set-cookie 首部字段,实体就是 ID
- 客户端收到响应报文后,会把首部字段 Set-cookie 的 ID 保存在浏览器的 cookie 文件中
- 当客户端访问同一个网站时,浏览器会从 cookie 文件中获取该网站的识别码,然后放在请求报文的 cookie 首部行中
- 服务器收到该请求,根据 ID 就可以跟踪记录用户的信息(购物历史等)
cookie 是存储在用户的浏览器上的
七、其他
信息安全中的加密算法
加密是指明文使用密钥便能生成对应的密文,解密是指密文使用密钥便能生成对应的明文,密钥相当于一把钥匙,对明文和密文进行加密和解密,加密算法包括对称加密算法和非对称加密算法
对称加密算法
此时发送方加密和接收方解密使用的是同一个密钥,该密钥只有发、接收方知道,是不公开的
对称加密算法包括:DES算法、3DES算法、AES算法
非对称加密算法
非对称加密有两个密钥,公钥和私钥,公钥是向外界公开的,私钥只有接收方知道,发送方使用公钥对明文进行加密,接收方使用私钥进行解密,因为加密和解密使用的不是同一个密钥,所以该算法称为非对称加密
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2VniaQ2O-1616467317308)(D:\考研\Pic\39.png)]](https://i-blog.csdnimg.cn/blog_migrate/782d705e12608dfe2796a65d570283f8.jpeg#pic_center)
该加密的过程是:
- 发送方使用接收方的公钥对明文进行加密,然后发送给接收方
- 接收方使用自己的私钥对收到的密文进行解密
非对称加密算法包括:RSA算法
区别
使用对称加密算法的时,要和每一个通信方协定一个密钥,还要担心协商过程中密钥泄露
使用非对称加密算法时,公钥是公开的,不需要保密,我们可以简单地将一个公钥分发给全部的通信方,只能通过私钥才能解密
八、参考
计算机网络微课堂
计算机网络(第七版)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)