计算机网络复习

1. 小案例

点击一个URL或者从浏览器的输入框输入一个URL,发生的事件(有时候也会问经过哪些协议处理):

  1. 浏览器分析链接指向页面的URL
  2. 浏览器向DNS请求解析www.xxx.com的IP地址
  3. 域名系统DNS解析出这个网址的IP地址为100.100.100.100
  4. 浏览器与服务器之间建立TCP连接
  5. 浏览器发出取命令的要求:GET /test/html/test.html
  6. 服务器给www.xxx.com做出响应,吧文件test.html发送给浏览器
  7. 释放TCP连接
  8. 浏览器显示当前的test.html中的文本

浏览器框输入一个网址会发生哪些步骤?

  • 首先是DNS服务器解析URL获取IP地址
  • HTTP协议发送请求到服务器
  • TCP连接然后将请求封装成数据报传输
  • IP协议边传输边转发
  • TCP协议将数据报合并,获取请求内容,服务器进行处理
  • 处理之后通过HTTP请求再响应回来即可
  • 浏览器解析渲染页面
  • 连接结束

2. OSI与TCP/IP协议体系

OSI具有七层模型,而TCP/IP协议体系只有四层其中应用层={应用层,表示层,会话层},网络接口层={数据链路层,物理层}
综合两者的话,采用五层模型,即物理层,数据链路层,网络层,传输层,应用层。

层与层之间的透明与传送对等:
对于这个理解的话,书里面说的是数据链路层中透明的传输数据,即无论什么样的比特组合的数据都可以通过数据链路层。物理层透明的传输比特流。

往后延伸会接触到一个协议的概念,协议:控制两个对等实体(或者多个实体)进行通信的规则的集合。在协议的控制下,两个对等体的通信使得本层能够像上一层提供服务,而要实现本层协议,还需要使用下面一层所提供的服务。

协议的实现保证了能够向上层提供服务,使用本层服务的实体只能看见服务而无法看见本层的协议,下面的协议对上面的实体是透明的。(层与层的透明可以支持)

协议是水平的,只有被高一层的实体看得见的功能才叫做服务,上层使用下层的服务必须通过与下层交换一些命令,这些命令叫做原语。

3. 数据链路层

数据链路层中包含两种信道:点对点信道以及广播信道

数据链路层中的协议数据单元称为帧。将数据封装成帧,在一段数据的前后分别添加首部和尾部

MTU(Maximum Transfer Unit)帧的数据部分的长度上线。最大传输单元

帧的封装结构
透明传输字节填充主要是防止帧定界符的意思被误解,从而填充字节,这样可以保证,帧的每一段的开始和结尾都能够被正确的识别。

CSMA/CD 载波监听多点接入/碰撞检测
多点接入:说明是总线型网络,许多计算机以多点接入的形式连接在一条总线上
载波监听:在发送数据之前先监听总线上是否有其他人在发送数据,有的话就不发,等到空闲之后再发
碰撞检测:表示边发送边监听,即适配器边发送数据边检测信道的信号电压情况,以便判断自己在发送数据时,其他站是否也在发送数据,当几个站同时发送数据时,总线上的信号电压变化将会增大(互相叠加)。表示多个站同时发送数据, 产生了碰撞。

交换机工作在数据链路层。

4. 网络层

网络层设计思路:网络层向上提供无连接的,尽最大努力交付的数据报服务,不提供服务质量的承诺。

IP地址和物理地址的区别:
IP地址是网络层和以上的各层使用的地址,是一种逻辑地址,是通过软件来实现的。
物理地址即我们常说的MAC地址,一台机器有一个独一无二的MAC地址,是数据链路层和物理层使用的地址。

ARP协议与RARP协议:目前RARP协议很少单独使用,都是使用DHCP协议来实现。
ARP是用来解决一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。(主要是通过IP地址寻找MAC物理地址)

ARP广播所想要当前MAC地址机器的IP地址,而相应却是单播的,从响应的那一台机器发送回来即可。

IP数据报格式:
在这里插入图片描述
标识:16位,数据报长度超过网络的MTU则必须分片。此标识字段的值使分层后的数据最后能正确的冲撞为原来的数据报。

标识:MF(More Fragment),MF=1,表明后面还有分片,如果是0表示当前位最后一个

片位移:13位,较长的分组在分片之后,某片相对于原分组中的相对位置。相对于用户数据字段的起点,该片从何处开始。

生存时间:TTL(Time To Live)8位,表明数据包在网络中的寿命,目的是防止无法交互的数据报无限制的在网络中兜圈子,数据报能再英特网中经过的路由最大数值为255

首部校验和:16位,这个字段是只检验数据报的首部,但不包括数据部分。

网络层的分组转发算法流程:

  1. 从数据包首部提取出目的主机的IP地址D,得出目的的网络地址为N
  2. 如果N就是与此路由器直接相连的某个网络地址,则直接进行交互,不需要再经过其他的路由器,直接把数据包交付给目的主机(这里需要将IP地址转化为硬件地址,把数据报封装成MAC帧,再发送帧数据);否则就是间接交付,执行3.
  3. 若路由表中有目的地址D的特定主机路由,则把数据报传递给路由表中所指向的下一跳路由;否则执行4
  4. 若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由;否则执行5
  5. 如果路由表中有一个默认路由,则把数据报传送给路由表中的默认路由器;否则执行6
  6. 报告转发分组出错

ICMP网际报文控制协议:IP层协议
共有两种报文:ICMP差错报告报文和ICMP询问报文

5种差错报文:

  • 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文
  • 源点抑制:当路由器或目的主机由于网络拥塞控制而丢弃数据报时,发送此报文
  • 时间超过:路由器收到生存时间为0的数据报时,除了丢弃数据报,还要发送时间超过报文
  • 参数问题:路由器或者目的主机收到的数据报的首部中有不正确的字段时,丢弃该数据报,发送此报文
  • 改变路由(重定向):路由器把改变路由的报文发送给主机,让主机知道下次应将数据报发送给另外的路由器

2种询问报文:

  • 会送请求和回答:由主机或者路由器向一个特定的目的主机发出的询问。收到此报文的主机或者路由器必须给源主机或者路由器发送ICMP回送回答报文。这种报文用来测试目的站是否可达了解其状态
  • 时间戳请求和回答:即某个主机或者路由器回答当前的日期或者时间。用来时间同步或者测量时间。

ICMP的一个重要应用就是PING命令(分组网间探测 Packet InterNet Groper)用来测试两台主机之间的连通性。
traceroute命令可以用来跟踪一个分组从源点到终点的路径。

5. 传输层

传输层是整个网络体系结构中关键层次之一。
传输层向上层的应用层提供通信服务,属于面向通信部分的最高层,同时也是用户功能中的最底层。

网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。

UDP(User Datagram Protocol)用户数据报协议,主要的特点:

  1. 无连接的:发送数据之前不需要建立连接,减少了开销和发送数据之前的时延。
  2. 尽最大努力交付,不保证可靠交付
  3. 面向报文的
  4. 没有拥塞控制,允许丢失一部分不是很重要的数据
  5. UDP支持一对一,一对多和多对多的交互通信
  6. UDP首部开销小,只有8个字节

UDP用户数据报的首部和伪首部
在这里插入图片描述
用户数据报的首部有两个字段:数据字段和首部字段。首部字段很简单:8个字节,由四个字段组成,每个字段两个字节。

  • 源端口
  • 目的端口
  • 长度:用户数据报的长度
  • 检验和:检验UDP用户数据报在传输过程中是否有错,有错的话就丢弃;检验规则和IP校验不同,IP检验只校验数据报的首部,但是UDP校验是首部和数据部分一起都校验。

TCP(Transmission Control Protocol):传输控制协议,主要特点如下:

  • TCP是面向连接的传输层协议,使用协议传输之前,必须建立连接
  • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
  • TCP提供了可靠交付的服务,通过TCP传送的数据,无差错,不丢失,不重复,并且按序到达
  • TCP提供全双工通信
  • 面向字节流

TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段还有多少个字节。UDP发送的长度是应用进程给出的。
TCP的连接是通过套接字来实现的,即IP地址:端口号

可靠传输的工作原理:
首先是停止等待协议:没发送完一个分组就停止发送,等待对方的确认,收到确认后再发送下一个分组。

出现差错的话就要使用超时重传机制了。

先看一下TCP报文段的首部格式:TCP虽然是面向字节流的,但是TCP传送的数据单元是数据报文段。
在这里插入图片描述
TCP首部有20个字节,UDP只有8个

  1. 源端口和目的端口,各占两个字节,分别写目标原端口号和目的端口号
  2. 序号:占四个字节,首部中的序号指的是本报文段的所发送的数据的第一个字节的序号。(报文段序号)
  3. 确认号:4个字节,期望收到对方的下一个报文段的第一个数据字节的序号。一般来说如果确认号为N,表示之前N-1位置的所有数据都已经被正确的接收。
  4. 数据偏移:占4个字节,表示TCP报文段的数据起始处距离TCP报文段的起始处有多远。
  5. 保留:占6位,保留为今后使用
  6. 紧急URG,URG为1的时候,表明紧急指针字段有效,告诉系统此报文段中有紧急数据,应该尽快传送,这个时候会插队。
  7. 确认ACK,仅当ACK为1的时候确认字段才有效,为0表示无效。TCP规定在建立连接之后,所有传送的报文段ACK都要置为1
  8. 推送PSH。两个应用进程之间交互通信,有时一段的进程希望键入一个命令立刻收到回复。就是用推送,一旦看见PSH为1,就尽快推送给应用进程,而不再等待缓存填满了再向上提交。
  9. RST复位,RST=1,表示出现了重大的错误,必须释放连接
  10. 同步SYN,在连接建立时用来同步序号。SYN置为1表示这是一个连接请求或连接接受报文。
  11. 终止FIN,用来释放一个连接,FIN=1,表示此报文段的发送方的数据已经发送完毕,并要求释放连接。
  12. 窗口:窗口值得是本报文段的一方的接收窗口。窗口值可以作为接收方让发送方设置其发送窗口的依据。总之,窗口字段明确指出了现在允许对方发送的数据量,窗口值是经常的动态变化的。
  13. 检验和:占2字节,范围包括首部和数据两个部分(检验的部分)
  14. 紧急指针:搭配前面的URG来使用。值得注意的是,即使窗口是0也可以发送紧急指针。
  15. 选项:长度可变,最长为40字节。没有使用选项的时候,TCP’首部长度为20字节

MSS(Maximum Segment Size)最大报文长度,表示每一个TCP报文段中数据字段的最大长度

TCP可靠传输的实现:
一、以字节为单位的滑动窗口,通过确认号和接收方所允许的接收数据量来构造滑动窗口。

发送缓存:存放的数据为:

  1. 发送应用程序传送给发送方TCP准备发送的数据
  2. TCP已发出但未收到确认的数据(收到确认就删除)

接收缓存:存放的数据
3. 按序到达的,但未被接收应用程序读取的数据
4. 未按序到达的数据

超时重传机制,用时间来支持重传机制的实施,具体的时间依靠RTT(报文往返时间)时间来定。
报文每重传一次,就把超时重传的时间RTT增加一些。典型的做法是取新的重传时间为2倍的旧的重传时间。

TCP流量控制:
利用滑动窗口来实现:
A->B A与B之间建立连接之后,A发送一个B所要求的数据大小,且每次B反馈给A自己还能接受多少的数据量

为避免A-B或者B-A报文丢失导致死锁的情况:采用如下方式避免
TCP每次连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若持续计时器的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值,若窗口值仍然是0,那么收到这个报文段的一方就重新设置计时器,若不是0,则死锁的僵局就打破了。

TCP拥塞控制:有两种策略

  1. 慢开始和拥塞避免策略:刚开始使用慢开始算法,每次成倍递增,到达初始的阈值,则采用拥塞避免策略,每次+1,如果阈值到达了某个数据产生了拥塞,此时将阈值设置为当前上限阈值的一般,且从0开始使用慢开始。
  2. 快重传和快恢复机制:快重传表示的是如果一个符号丢失了,此时接收端没有收到就会一直要求发送端重传,发送端一连收到3个立即重传。快恢复策略:与上述的策略差不多,只是在出现了阻塞的时候,此时阈值变为上限阈值的一半,此时的开始从阈值处重新开始利用拥塞避免逐渐+1增大。

TCP的三次握手,四次释放。

6. 应用层

DNS(Domain Name System)域名系统
域名到IP地址的解析过程为:当某一个应用进程需要把主机名解析为Ip地址时,该应用进程就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发送给本地域名服务器,本地域名服务器在查找域名时,把对应的IP地址放在回答报文中返回,应用进程获得目的主机的IP地址即可进行通信。

名字空间指的是定义了所有可能的名字的集合。

DNS域名的名字空间:根域名服务器,顶级域名服务器,权限域名服务器,本地域名服务器。

域名的解析过程:

  1. 主机向本地域名服务器的查询一般都是采用递归查询。递归查询的意思是,采用一级一级的方式向下查询,比如主机查找,先查找本地域名服务器,本地域名服务器查找根域名服务器,根域名服务器查找顶级域名服务器,最后查找权限域名服务器。
  2. 本地域名服务器向根域名服务器查询通常是迭代查询。就是每一个都尝试一下。

为了提高DNS查询效率并减轻根域名服务器的负荷和减少因特网上DNS查询报文数量,再域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

FTP文件传输协议,主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

FTP有两种工作方式:Standard也就是PORT方式,主动方式。一种是Passive,PSV表示被动方式。

主动模式是FTP的客户端发送PORT命令到FTP服务器,客户端要求客户端建立控制连接与数据连接,使用的是21和20端口
被动模式是FTP的客户端发送PSV命令到FTP服务器,建立控制连接之后,服务端自觉地创建临时数据连接的接口,告诉客户端咱们两个通过这个端口传输数据。

进行文件传输,FTP的客户端与服务器之间需要建立两个并行的TCP连接,控制连接+数据连接。FTP的控制端口21,数据端口20

7. HTTP的格式

HTTP报文的格式:

  1. 请求报文
    • 请求行
      • 请求方法
      • HTTP协议版本
    • 请求头->Content-Type
    • 空行CRLF
    • 请求体
  2. 响应报文
    • 状态行:状态码
    • 响应头部
    • 空行
    • 响应体

请求头中常见的参数项:
Host、User-Agent、Referer、Cookie、Range、Accept、Accept-Charset、Accept-Language、Accept-Encoding

响应头常见的参数项:
Server、Set-Cookie、Last-Modified、Location(配合302实现重定向)、Refresh(定时刷新)、Cache-Control(缓存策略)、Content-Type、Content-Encoding、Content-Length

HTTPS:HTTPS是披着SSL外壳的HTTP,HTTPS是一种经由网络进行安全通信的传输协议,经由HTTP进行通信,利用 SSL/TLS建立安全通道加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份的认证,同时保护交互数据的隐私和完整性。

SSL(Secure Sockets Layer)安全套接字层
TLS(Transport Layer Security)安全传输协议,前身是SSL

现在流行的都是使用证书来实现公钥的存放,同时验证服务器的身份安全性。

证书中包括:

  • 证书的发布机构
  • 证书的有效期
  • 公钥
  • 证书所有者(Subject)
  • 签名所使用的算法
  • 指纹以及指纹算法

模拟客户端和服务器之间的通信过程:

客户端向服务器发送通信请求,服务器端收到请求之后,将服务器中的数字证书发送给客户端,客户端收到数字证书之后,获取到其中的公钥,然后随机生成一个随机字符串利用公钥加密之后发送给服务器(这里就是在验证服务器的身份),服务器收到之后,通过自己的私钥对其进行解密,解密之后在通过自己的私钥对其加密发送给客户端,客户端收到之后,此时用自己的公钥对其解密,如果解密出来的字符串与刚刚自己发的一致,表名服务器的身份是真实的,表明通信环境安全。

然后的话双方就要进行数据的传输了,但是非对称加密算法不适合传输大数据量的数据,所以双方此时需要协商一个堆成加密的公钥和私钥。此时客户端生成对称加密私钥,通过自己的公钥来给这些信息加密,加密之后传输给服务器,服务器利用私钥解密之后,就拿到了双方传输数据的对称加密的私钥了,就可以进行数据的传递了。(对称加密的意思就是客户端用私钥加密,服务器端用私钥解密)

注意:上述的字符串很可能会被拦截,然后被伪装成一串有规律的数字,从而可以套出加密的规律,对私钥具有安全性威胁,这里采用的是,服务器端收到之后,对解析处的字符串做hash操作,客户端收到之后直接比较之前字符串的hash值是否相等即可。

对称加密算法:DES加密算法
非对称加密算法:RSA算法

8. 小结

目前复习到的知识点就是这么多,可能在面试过程中还会继续遇到一些没有见到过的问题,计算机网络大多问的问题都是TCP/UDP,三次握手,四次释放,流量控制,拥塞控制。以及HTTP以及HTTPS,还有常见的加密算法,HTTPS中数字证书发挥出来的作用在哪里,对称加密是什么意思,非对称加密是什么意思。常见的对称加密算法,以及非对称加密算法。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值