网络技术学习指南读后感(网络篇三)
网络技术学习指南读后感(网络篇三)1)流程当然也会存在省略文件名的情况,这种需要事先设置好省略时要访问的默认文件名准备好了吗?一起来梳理一下吧~开头:http: ftp: file: mailto: 表示使用的各种协议类型)URL 的格式:协议 Web 服务器名 数据源(文件)的路径名
大家好,我是 杰哥
网络篇的总结输出持续进行中
《趣谈网络协议》以趣味性的方式分别对网络各个层级的协议进行了介绍
当我们有了一些协议的基础知识之后,再来看《网络是怎样连接的》,便会将之前的这些知识由各个点,真正串起来,形成一块比较完备的网络知识体系,从而对网络知识也会有更进一步的理解
准备好了吗?一起来梳理一下吧~
一、浏览器生成消息(一)生成HTTP 请求消息1、输入网址开头:http: ftp: file: mailto: 表示使用的各种协议类型)
2、解析网址URL 的格式:协议 Web 服务器名 数据源(文件)的路径名
当然也会存在省略文件名的情况,这种需要事先设置好省略时要访问的默认文件名
3、HTTP 协议1)流程
- 客户端向服务端发送请求消息-对什么:URI,进行怎样的操作-方法
- 服务端收到消息,处理之后,返回响应消息
2)请求消息
GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en mi
由请求行、请求头部、空行和请求数据四个部分组成
3)响应消息
HTTP/1.1 200 OK
Date: Mon 27 Jul 2021 12:28:53 GMT
Server: Apache
Last-Modified: Wed 22 Jul 2021 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
由状态行、消息报头、空行和响应正文四个部分组成
4)注意
每条请求消息中只能写 1 个 URI 。若需要获取多个文件,必须对每个文件单独发送 1 条请求
(二)向 DNS 服务器查询 Web 服务器的 IP 地址1、IP 地址的基本知识1)由网络号 主机号组成,共 32 比特,并使用子网掩码表示
2)主机号全 0,表示整个子网;如:10.11.12.0/24
3)主机号全 1,表示对整个子网进行广播。如:10.11.12.255/24
2、域名和IP 地址并用的理由1)首先,由人直接记住一串串数字,比较麻烦
2)若直接使用域名进行网络间的传输,会增加路由器的负担,影响传输效率
因此,目前的方案是:让人使用域名,让路由器使用 IP 地址
而 DNS 则提供了两者的映射关系-对照表
3、socket 库是用于调用网络功能的程序组件集合
4、委托协议栈发送消息四个阶段:
1)创建套接字
socket 程序
2)连接
将管道连接到服务器端的套接字上,采用 connect 程序
3)收发数据
接收:read 程序,发送:write 程序
4)断开管道,并删除套接字
close 程序
5、描述符应用程序用来识别套接字的机制
二、用电信号传输 TCP/IP 数据操作系统中的协议栈是如何处理数据发送请求的
(一)创建套接字首先分配一个套接字所需要的内存空间,然后向其写入初始状态的控制信息
协议栈是根据套接字中记录的控制信息来工作的
(二)连接服务器实际上是通信双方交换控制信息,在套接字中记录这些控制信息,并准备数据收发的操作。过程中也会分配一个内存空间:用于存放收发的数据空间
1、控制信息分为2类1)头部中记录的信息
2)套接字(协议栈中的内存空间)中记录的信息
(三)收发数据1、要发送的数据是一定长度的二进制序列
2、何时发根据数据长度和时间这两个因素决定,可以由应用程序控制
1)MTU:一个网络包的最大长度,以太网中一般为 1500 字节
2)MSS:除去头部之后,一个网络包所能容纳的 TCP 数据的最大长度
3、如何确认接收到了网络包通过序号和 ACK 号,可以确认接收方是否收到了网络包
4、TCP 如何确定 ACK 号的等待时间TCP 根据网络包的平均往返时间来动态调整等待 ACK 号等待时间
5、ACK 和窗口更新放在一个包发送并且两者可以省略中间过程,只发一段时间内合并之后的最终结果
(四)接收 HTTP 响应消息流程如下
1)协议栈将收集到的数据复制到应用程序指定的内存空间中,并将控制流程交回应用程序
2)找到合适的机会发送 ACK 和窗口更新数据
(五)IP 与 以太网的包收发操作1、由集线器、路由器等网络设备完成2、路由表3、网络包结构
4、发送网络包1)TCP 模块:对数据包添加 TCP 头部,交给IP层,需要指定“将什么内容,发给谁”,即数据块和通信对象的 IP 地址
2)IP 模块:将 TCP 头和原有的数据块看做一个数据包,对这个数据包添加 IP 头部,交给 MAC 模块
其中,IP 头部的“接收方 IP 地址”,填写通信对象的 IP 地址;发送方 IP 地址需要判断发送所使用的的网卡,并填写该网卡的 IP 地址
3)MAC 模块:加上 MAC 头
MAC 地址,需要使用 ARP 协议进行查询,并会将查询到的 MAC 地址缓存一段时间之后删除;该模块还会在包的开头加上报头和起始帧分界符,在末尾加上用于检测错误的 FCS(帧校验序列)
- 报头:确定包的读取时机;
- 起始帧分界符:用来表示包起始位置的标记
- FCS:判断数据在传输过程中是否发生变化
4)向集线器发送网络包
MAC 模块生成通用信号,然后由 PHY(MAU) 模块转换成可在网线中传输的格式,并通过网线发送出去
5、接收网络包与发送相反
1)由 PHY(MAU) 模块转换成通用信号,传递给 MAC 模块
2)MAC 模块将通用信号转换成数字信息 检查 FCS。若不正确,则丢弃;否则存放到缓冲区
3)对比 MAC 地址与自己的 MAC 地址,若不同,则丢弃;否则,通知计算机
4)网卡驱动被中断处理程序调用,从缓冲区中取出收到的包
5)检查 IP 头部,确认格式和接收方 IP 地址是否与自己相同。
- 若不同,则会通过 ICMP 消息将错误告知发送方
- 若相同,则被接收
6)分片重组
接收成功之后的包暂存在内存空间,等待 IP 头部中具有相同 ID 的包全部到达,还原成原始的包
7)交给 TCP 模块
找到相应的套接字,执行相应的操作
6、UDP 协议的收发操作只需要单纯地发送,不用保证其可靠性。适用于以下几种数据
1)不需要重发的数据
2)控制用的短数据
3)音频和视频数据
三、从网线到网络设备主题:网线传输出去的包,是如何经过集线器、交换机和路由器等网络设备,最终进入互联网的?
(一)信号在网线和集线器中传输1、数据包发送到互联网的过程客户端-集线器-交换机-路由器-互联网接入路由器-互联网
2、噪声是如何产生的?网线周围若存在电磁波,就会在网线中产生和原本的信号不同的电流
网线周围的电磁波分为两种:网线之外的其他设备、从网线中相邻的信号线泄漏出来的
3、双绞线对噪声的抑制局部网网线使用的是双绞线,即以两根信号线为一组缠绕在一起
通过两根信号线的缠绕抵消外源性噪声;通过改变节距抑制内源性噪声
4、集线器负责按照以太网的基本架构将信号广播出去,即将信号发送给所有连接在它上面的线路
5、集线器相关设备- MDI:直连接线(两台集线器相连)
- MDI-X:交叉接线(发送、接收信号线反过来连接的网线)
- 中继电路:接收到的数据信号广播到集线器上所有接口,通过接口发送给所有设备
1)交换机端口的 MAC 模块不具有 MAC 地址
2)交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口
2、MAC 地址表的维护1)将 MAC 地址以及其输入端口的号码写入 MAC 地址表中
2)对于一段时间之后不使用的记录,自动删除
3、特殊操作1)交换机查询地址表之后,发现记录中的目标端口和这个包的源端口相同,丢弃
2)在地址表中没有查到指定的 MAC 地址,将包转发到除了源端口之外的所有端口上
只要目标设备返回了响应,交换机就会把它的地址写入地址表,下次就不需要把包发送到所有端口了
4、交换机的全双工模式可以同时发送和接收信号。交换机可以自动切换全双工和半双工模式
5、自动协商探测对方所能支持的工作模式和传输速率,进行自由协商确定其传输的工作模式和传输速率
一般在没有数据传输时,网络会填充一种“脉冲信号”进行检测
6、交换机具有多个端口因此可以同时执行多个转发操作。而集线器会将输入的信号广播到所有端口,那么就只能传输一个信号,否则会发生碰撞
(三)路由器的包转发操作1、路由器可以作为发送方或者接收方的各个端口都具有 MAC 地址和 IP 地址,因此自己就可以成为发送方或者接收方
2、路由器根据 “IP 地址”判断转发目标3、路由器会忽略主机号,只匹配网络号就是说,路由器在转发包的时候,只会看接收方地址属于哪个区,而不会看具体是哪个街道或者哪个小区
4、路由聚合多个子网被合并成一个子网,如将 10.10.1.0/24、10.10.2.0/24、10.10.3.0/24,合并成 10.10.0.0/16
5、路由拆分将一个子网拆分成多条记录,并注册在路由表中
6、路由表的子网掩码列只表示在匹配网络包目标地址时,需要对比的比特数量
7、网关和接口两列表示网络包的转发目标
8、跃点计数表示距离目标 IP 的距离远近
9、对路由表的维护方法1)由人手动维护路由记录
2)根据路由协议机制,通过路由器之间的信息交换,由路由器自行维护路由表记录。路由协议包括 RIP、OSPF 以及 BGP 等
10、路由器的包接收操作路由器的端口都具有 MAC 地址,只接收与自身地址匹配的包,遇到不匹配的包则直接丢弃
11、确定输出端口1)根据最长匹配原则,筛选出记录
2)选择跃点计数的值最小的一个端口
3)若未找到,则通过 ICMP 消息告知发送方,并丢弃这个包
4)找不到匹配路由时,选择默认路由
12、包的有效期IP 头部中的 TTL 字段,每经过一个路由器的转发,这个值就会减 1,当这个值变为 0 时,就表示超过了有效期,这个包就会被丢弃
主要为了防止包在一个地方陷入死循环
13、分片功能路由器可以通过分片功能,拆分大网络包
14、路由器判断下一个转发目标的方法- 若路由器的网关列内容为 IP 地址,则该地址就是下一个转发目标
- 若网关列内容为空,则 IP 头部中的接收方 IP 地址就是下一个转发目标
同时,它也可以使用 ARP 来查询转发目其标的 MAC 地址。发送方的 MAC 地址为输出端口的 MAC 地址
15、路由器与交换机的关系1)路由器是基于 IP 设计的,而交换机是基于以太网设计的
2)路由器将包的传输工作委托给交换机来进行。具体来说, 路由器,负责将包送到通信对象的过程;交换机,负责其中的将包传输到下一个路由器这一过程(所有以太网设备,包括集线器等)
(四)路由器的附加功能1、地址转换功能1)基本原理
a.私有地址转换成公有地址,端口号同时也要改写为地址转换设备随机选择的一个端口
b.将改写前的私有地址和端口号,以及改写后的公有地址和端口号,作为一组相应的记录,保存在路由器中,如下所示地址和端口对应表中:
其中,改写端口号,提高了公有地址的利用率
2)实现互联网与内网的相互访问
2、包过滤功能根据 MAC 头部、IP 头部、TCP 头部的内容,按照实现设置好的规则,确定包是否可以通过
四、通过接入网进入互联网内部主题:如何通过用户接入互联网的路由器,最终进入互联网的内部
(一)ADSL 接入网的结构和工作方式1、互联网也是通过路由器来转发包的与家庭、公司网络之间最主要的两个不同点是:距离不同和路由的维护方式
互联网的距离比较长,路由的维护方式需要实现自动化
2、BAS(宽带接入路由器)可作为用户认证的窗口,还可以使用隧道方式来传输网络包
3、ADSL 接入网的结构1)在 PPPoE 方式下,互联网接入路由器会在网络包前面加上 MAC 头部、PPPoE 头部、PPP 头部总共 3 种头部,然后发送给 ADSL Modem
说明:
PPPoE,PPP over Ethernet,它是一种控制 ADSL、FTTH 等宽带网络的方式
2)ADSL Modem 会把包拆分成信元,并转换成电信号发送给分离器
3)信号通过电话线到达电话局之后,会经过配线盘、分离器到达 DSLAM。在这里,电信号会被还原成数字信息
DSLAM 是一种相当于很多个 ADSL Modem 的功能集中在一个外壳里的设备。与 ADSL Modem 不同之处在于:收发数据使用的是 ATM 信元形式
4)信元从 DSLAM 出来之后,会到达 BAS 的包转发设备。BAS** 负责将 ATM 信元还原成网络包并转发到互联网内部
4、“调制”成电信号1)振幅调制:用信号的强弱,即信号振幅的大小来对应 0 和 1
缺点:受噪声影响,振幅级别不能太多
2)相位调制:用角度对应 0 和 1
缺点:角度越接近,越容易产生误判
ADSL,采用振幅调制和相位调制相结合的正交调制方式
可以通过增加振幅和相位的级别的组合,来增加能表示的比特数
5、分离器的作用信号从电话线传入的时候,将电话和 ADSL 的信号进行分离,防止电话 与 ADSL 的信号之间的干扰
(二)光纤接入网(FTTH)1、FTTH 认识关键点在于对光纤的使用,而光纤的关键技术,则是能够传导光信号的光纤
2、光纤的分类- 单模光纤:只有角度最小的光线能进入;
- 多模光纤:可以有多条光线在纤芯中传导
不同之处:多模光纤对光源和光敏元件的性能要求较低,从而可以降低光源和光敏元件的价格
单模光纤不会发生严重的失真,多模则会
FTTH 属于单模光纤,用于距离较远的建筑物之间的连接
3、FTTH 分类可分为直连和分路两种方式,在 PPPoE 模式下,工作过程与 ADSL 类似
(三)接入网中使用的 PPP 和隧道1、PPPoE 传输方式是将 PPP 消息装入以太网包进行传输的方式
说明:
PPP,点对点协议(Point to Point Protocol),属于二层协议,隧道协议的一种
2、接入网的整体工作过程1)连接操作。互联网接入路由器通过 PPPoE 的发现机制查询 BAS 的 MAC 地址
2)用户认证和下发配置。BAS 下发的 TCP/IP 参数会被配置到互联网接入路由器的 BAS 端的端口上,这样路由器就完成接入互联网的转变了
3)客户端发送用来访问互联网的网络包。按照 PPPoE 规则转发
具体来说,
- 要发送的包被加上头部信息,并设置相应字段
- 然后,网络包被转换成信号,从相应的端口发送出去
- 到达 BAS。BAS 会将 MAC 头部和 PPPoE 头部去掉,然后用隧道机制将包发送给网络运营商的路由器
- 若公网地址分配在互联网接入路由器上,需要进行地址转换;
- 若公网地址分配在计算机上,不用进行地址转换,但会有被攻击的风险
- PPPoA 方式,不添加 MAC 头部和 PPPoE 头部,而是直接将包装入信元中
- DHCP 方式(动态主机配置方式),不使用 PPP ,而是将以太网包直接转换成 ADSL 信号发送给 DSLAM
网络包通过接入网之后,到达运营商 POP 的路由器
(五)跨越运营商的网络包1、BGP 机制互联网内部使用 BGP 机制在运营商之间交换路由信息
2、运营商只将由信息提供给交了费的运营商3、IX(互联网交换中心)是所有运营商相互连接的一个中心设备,相对于运营商之间一对一连接的方式,可以大大减少连接的线路数量
4、IX 的实体是高性能交换机对于收到的某个路由器的网络包,可通过 ARP 查询下一个路由器的 MAC 地址,然后将其写入 MAC 头部发送出去即可
前提是运营商之间按照合约,实现了正确的路由信息的交换
五、服务器的局域网中有什么玄机主题:网络包到达了运营商的 POP 端,继续朝服务器前进,并将通过服务器前面的防火墙、缓存服务器、负载均衡器等
(一)防火墙的结构和原理1、包过滤方式1)根据接收方和发送方地址判断包的流向,并设置是允许还是阻止
2)通过发送方、接收方的端口号限定应用程序
3)通过控制位阻止某个方向的连接(根据 TCP 协议建立连接时,第一次握手的发送方向与所传输的控制位参数 SYS 和 ACK 的值,进行控制位的判断)
4)防火墙,对于需要检查包的内容才能识别到的风险,无法控制
这种风险有两种方式:
a.修复 Web 服务器程序的 BUG(需要持续关注安全漏洞信息并更新软件的版本)
b.在防火墙之外部署用来检查包内容并阻止有害包的设备或软件
(二)负载均衡1、DNS 服务器是一种采用轮询方式的负载均衡器,但是对于宕机的服务或者发生变化的服务器,无法识别到
2、负载均衡器1)对于操作没有跨多个页面的,根据 Web 服务器的负载状况去分配服务器地址
2)对于跨页面的情况,在 HTTP 头部字段中加上 Cookie 等相关信息,将一系列相关请求发送到同一台 Web 服务器
(三)使用缓存服务器分担负载1、缓存服务器是一台通过代理机制对数据进行缓存的服务器,可以代替 Web 服务器将缓存的数据返回给客户端,减轻 Web 服务器的负担
2、三种常见的代理1)正向代理
需要在浏览器中进行设置。浏览器-》正向代理-》真正请求的 URL (任意 Web 服务器)
2)反向代理
部署在服务器端的缓存服务器,对于客户端是无感知的
3)透明代理
放在从浏览器与 Web 服务器之间,当消息经过时进行拦截,客户端无感知
(四)内容分发器1、内容分发器部署缓存服务器,并租借给 Web 服务器
2、CDSP由 CDSP 部署“缓存服务器”,可缓存多个网站的数据,因此可提供给多个 Web 服务器的运营者共享。CDSP 还负责与运营商之间的签约工作
3、如何找到最近的缓存服务器?1)对 DNS 服务器进行扩展的方法
判断客户端与缓存服务器之间的距离,转移到估算客户端 DNS 服务器 与缓存服务器地点部署的路由器之间的距离:
从缓存服务器部署地点的路由器收集路由信息,通过比较找出某一台路由器距离客户端 DNS 服务器最近,从而大致得出客户端与缓存服务器之间的距离,取到最近距离的路由之后,即可确定最近的缓存服务器
2)重定向
使用重定向服务器,有两种方式:
1)返回 Location 字段
重定向服务器,收集来自各个路由器的路由信息,并根据这些信息找到最近的缓存服务器,然后将缓存服务器的地址,放到 Location 字段中返回响应
2)返回估算距离的脚本
由重定向服务器返回一个通过网络包往返时间估算到缓存服务器的距离的脚本,通过客户端运行脚本,找到最优的缓存服务器
4、消除缓存中影响性能的方法1)Web 服务器的数据发生变化时,立即通知缓存服务器,不用每次由缓存服务器再去请求 Web 服务确认内容是否发生变化;
2)将动态与静态内容分开,只将静态部分(内容不会发生变化的部分)保存在缓存中
六、请求到达 Web 服务器,响应返回浏览器(一)服务器概览1、服务器程序的结构说明:
1)程序分为两个模块:等待连接模块和负责与客户端通信的模块
2)服务器启动后,运行等待连接模块,创建套接字,并进入等待连接的暂停状态;
3)当客户端发起连接时,等待连接模块会恢复运行,接受连接;并启动客户端通信模块,移交完成连接的套接字
4)客户端通信模块使用已连接的套接字与客户端进行通信
5)通信结束之后,客户端通信模块退出
当然,为了减少耗时,可以事先启动几个客户端通信模块,当客户端发起连接时,从空闲的模块中挑选一个将套接字移交给它即可
2、服务器程序的通信操作1)创建套接字
2-1)将套接字设置为等待连接状态
将端口写入套接字(端口号是用来识别套接字的)
2-2)接受连接
协议栈会给等待连接的套接字,复制一个副本,让客户端连接到这个新副本上
3)收发数据
4)断开管道并删除套接字
3、如何确定套接字?使用 客户端 IP 地址、客户端端口号、服务端 IP 地址以及服务端端口号,这 4 种信息可以确定某个套接字
4、使用描述符来指代套接字的原因1)等待连接的套接字中没有客户端 IP 地址和端口号
2)使用描述符这一种信息比较简单
(二)服务器的接收操作与接收网络包的流程基本一致
(三)Web 服务器程序解释请求消息,并作出响应1、将请求的 URI 转换为实际的文件名主要有三种情况:
1)根据虚拟目录与实际目录的对应关系,找出实际的文件名后,读取文件返回数据
2)读取实现设置好的默认文件名
3)根据改写规则,对于发生变化的文件名进行访问
2、运行 CGI 程序3、Web 服务器的访问控制规则主要有以下三种:
1)客户端 IP 地址
2)客户端域名
3)用户名和密码
4、返回响应消息与客户端向服务器发送请求消息时的过程相同
(四)浏览器接收响应消息并显示内容1、流程步骤1)根据响应信息中的头字段得到返回数据的数据类型
2)浏览器,调用用于显示内容的程序,显示响应的内容即可
七、总结好了,从浏览器输入网址,到显示出网页内容的整个步骤已经梳理完了
总得来说,需要经历从客户端到客户端局域网,再经过互联网接入网,到达 Web 服务端局域网,请求 Web 服务器进行请求的解析与处理,并最终由 Web 服务器返回处理结果,经原路返回,由浏览器调用程序,显示页面内容即可
可以对比着这幅网络包的旅程图,再复习一遍
嗯,就这样。每天学习一点,时间会见证你的强大~
欢迎大家关注我们的公众号,一起持续性学习吧~