网络是怎样连接的

协议栈

网络控制软件。

网卡

将包转换为电信号并通过网线发送出去。

www

www只是Web服务器上的一种命名。

World Wide Web不是一个协议的名字,而是Web的提出者最早开发的浏览器兼HTML编辑器的名字

URL格式

其用户名,密码,端口号可省略。

默认文件。

CGI

Common Gateway Interface公共网关接口.

HTTP谓词

也叫HTTP动词,方法。

设置网卡是会设置DNS地址,就是DNS服务器的IP地址。

GET方法能够发送的数据只有几百个字节,如果表单中的数据超过这一长度,则必须使用POST方法来发送。

请求消息

格式:

  • 请求行,可大致了解请求内容
  • 消息头,附加信息
  • 消息体,数据

消息头之后会有一个空行。

使用GET方法时,消息体中不需要数据。

使用POST方法时,需要将表单中填写的信息写在消息体中。

响应消息

第一行为状态码和响应短语。

URI

每个URI标识一个文件。

每条请求消息中只能写一个URI,所以每次请求只能获取一个文件。

域名和IP

直接用IP地址来代替服务器名称也能正常工作,但如果Web服务器使用了虚拟主机功能,就可能无法通过IP地址来访问。

域名便于记忆。
IP地址便于传输。

操作系统的Socket库

含DNS解析器。

库,一堆通用程序组建的集合。

几个函数:

  • socket,创建套接字。
  • connect,客户端套接字与服务端连接。三个参数,描述符,服务器IP地址和端口号。
  • write,两个参数,描述符和发送数据。
  • read,需指定接收缓冲区。
  • close,删除套接字。

DNS服务器

基本工作,接收来自客户端的查询消息,然后根据消息的内容返回响应。

MX,mail exchange.

记录类型,A—address,对应IP地址。
MX,对应邮件服务器。

DNS服务器分层。
创建子域。

子域的DNS服务器的IP地址注册到上级DNS 服务器中。

DNS服务器并不会转发请求,只会直接将下一台DNS服务器的IP告诉我们,然后我们再去发起请求。

从根服务器开始查询。

DNS服务器有缓存功能,可以记住之前查询过的域名。
缓存信息有一个有效期。

套接字

socket,传输层连接通信的通信端点。

服务器一般会在启动后就创建好套接字并等待客户端连接管道。

断开可以由服务端和客户端任意一方发起。

断开后,套接字会被删除。

创建套接字后会返回描述符。

几个阶段:

  • 创建套接字
  • 连接Web服务器
  • 发送数据
  • 接收数据
  • 断开连接,删除套接字

其实质是一块内存空间,记录了用于控制通信操作的控制信息。

协议栈是根据套接字中记录的控制信息来工作的。

套接字的创建:

  • 分配内存空间
  • 在控制信息的state列中写入listening
  • 分配数据包的缓存空间

连接服务器

连接实际上是通信双方交换控制信息(用来控制数据收发操作所需的一些信息),将必要信息记录在套接字并准备数据收发的操作。

可以看作为“准备”。

有以下内容:

  • 把服务器的IP地址和端口号告知协议栈
  • 客户端向服务器传达开始通信的请求

过程

  • 客户端syn
  • 服务端syn,ack
  • 客户端ack

Web和电子邮件的端口号

Web—-80
电子邮件—-25

HTTP工作流程

  • 连接
  • 发送请求消息
  • 接收响应消息
  • 断开

解析器

Resolver,将域名转换为IP地址。

TCP和UDP

浏览器、邮件等一般应用程序收发数据时用TCP。

DNS查询等收发较短的控制数据时用UDP。

PID

Process IDentifier,进程标识符。

通信中的控制信息

  • 头部信息
    指明传送的对象和发送的信息。

  • 套接字中记录的信息

SYN

Synchronise Sequence Numbers,同步序列编号。

用于表示连接状态

ACK用于表示消息的接收状态。
ACK序号是一个随机值。
ack序号在交互过程中会改变。

收发数据

协议栈并不是一收到数据就发送出去,而是会存放在内部的发送缓存区。

两个判断要素:

  • 长度,MSS
  • 时间

或应用程序指定。

发送过的包会保存在发送缓冲区中。
因此,网卡、集线器、路由器都没有错误补偿机制。

梳理

两种情况:

  • 客户端向服务器发送消息
  • 服务器向客户端发送消息

两者可同时进行。
以客户端向服务端发送为例:

  • 应用程序将数据传送给协议栈
  • 数据进入协议栈内部的发送缓冲区,积累到一定量后发送或等待一段时间后发送
  • 发送缓冲区的数据被以MSS长度为单位拆分,并计算数据长度放入头部,之后放入单独的网络包,标记上TCP头部,并根据套接字上的信息标记发送方和接收方的端口号。最后将数据包传给IP模块。
  • IP模块发送数据包。并将发送过的包包存在发送缓存区中。
  • 服务器接收数据后计算ACK号并返回

ACK号和序号初始值相关。
TCP会动态设置ACK号的等待时间。

MTU

Maximum Transmission Unit,表示一个网络包的最大长度。其是包含头部的长度。

MSS

Maximum Segment Size,最大分段大小。去除头部的大小。

数据会以MSS的大小拆分。

SFD

Start Frame Delimiter,起始帧分界符。

FCS

Frame Check Sequence,帧校验序列

滑动窗口

为了防止接收缓冲区溢出。

窗口大小代表了缓冲区大小。

窗口的大小是动态变化的。更新时机,当接收方将数据传递给应用程序时(此时接收缓冲区会变大)。

ACK号可合并,比如要返回两个ACK号,201~400和401~600,此时可合并为一个201~600。

在返回ACK号时若更新了窗口大小,则可将这两个信息一起返回。

IP包的收发

发送方和接收方统称为终端节点,转发设备被称为转发节点或者中间节点。

TCP模块将包传递给IP模块时,需指定通信对象的IP地址。

IP模块添加两个头部:

  • MAC头部,包含MAC地址,用于将包传输至最近的路由器的控制信息。
  • IP头部,将包发往目的地的控制信息。

IP地址的最初来源是应用程序,应用程序交给TCP模块,TCP模块传递给IP模块。

IP地址实际上是分配给网卡的。

协议号。

MAC头中写的MAC地址在传输过程中会改变。

以太类型就是使用的协议类型。

ARP表

查询目标路由器的MAC地址。

可能发生的通讯异常,当IP地址改变时,ARP缓存表中的值并未改变。

以太网

一种以多台计算机能彼此自由和廉价地通信而设计的通信技术。

最开始,以太网中一个设备发送信号,其他设备都会接收到。

三个未改变的基本性质:

  • 包发送到MAC头部中的接收方的MAC地址,即目的地。
  • 用MAC头部中的发送方的MAC地址识别发送方。
  • 用以太类型识别包的内容。

以太类型就是协议类型。

网卡

结构:

硬件设备都有驱动程序。

网卡驱动程序也是厂商开发的专用程序。

硬件在工作前要初始化。

网卡的ROM中保存着唯一的MAC地址。在生产时写入。

网卡驱动进行初始化时在MAC模块中设置MAC地址。

报头和报尾

MAC模块会在包开头加上报头和起始帧分界符(长56比特),最后两位为11.

在末尾加上用于检测错误的帧校验序列(长32比特)。

时钟信号的作用

时钟信号,用于判断出比特之间的界限。哪一截是一比特,由时钟信号判断。

可以决定是在上升沿或下降沿读取电压和电流信号。

解决时钟偏移的问题,发送的信号为数据信号和时钟信号的叠加。

报头的作用

用于测量时钟信号。

发送方式

  • 集线器的半双工模式,即同一时刻只能进行发送和接收中的一种。
  • 全双工模式,同一时刻发送和接收能同时进行。

网络的传输速率

即数字信息转换为电信号的速率。

MAU模块

将MAC模块生成的通用信号转换成可在网线中传输的格式,并通过网线发送出去。

还具监听作用。

信号碰撞。

中断

一种电信号,由硬件产生,并直接送到中断控制器上,然后再由中断控制器向CPU发送信号,CPU检测到信号后,就会中断当前的工作转而去处理中断。

就是让CPU停下(挂起)当前的程序,而运行中断处理的程序。

在这里,形象的说中断就是“敲门”这个动作。

主要的ICMP消息

接收服务器响应

分片重组。

套接字工作。

UDP协议的收发操作

向DNS服务器查询IP的时候使用的是UDP协议。

音频和视频数据使用UDP发送

信号在网线和集线器中传输

现在的家用路由器已集成了集线器和交换机的功能。

电信号的频率越高,能量的损失率越大。

双绞线

双绞线,抑制噪声。

分正负两条网线。

电磁波接触金属等导体,会在其中产生电流,因此,若网线周围有电磁波,就会产生和原本的信号不同的电流。

噪声分内源性噪声和外源性噪声。

集线器

将信号广播。

MDI/MDI-X切换开关

Media Dependent Interface,媒体相关接口,直连接线,用于集线器之间连接。

Media Dependent Interface- Crossover。交叉接线,用于集线器和设备之间连接。

直连接线就是“发送线路”连“发送线路”,“接收线路”连“接收线路”。

交叉接线是“发送线路”接“接收线路”,反之亦然。

交换机

几乎都有的结构,内存、MAC模块和PHY模块。

几乎都有的操作,将输入的电信号转换为数字信号,然后将数字信号转换为电信号发送出去。

交换机端口的MAC模块不具有MAC地址。

交换机中登记的MAC地址和端口对应。

交换电路

交换机由交换电路而来。

交换电路交叉点处的交换开关为电子开关。

其地址表会自行更新或删除。

若没有接收方的端口,则广播到所有的端口。

接收设备接收到包后会返回响应,这样交换机就可以记录。

全双工模式

交换机特有。

不使用集线器,就可以避免信号碰撞。

工作模式。

连接脉冲

在以太网中没有数据传输时,填充的脉冲信号。

检测对方网线是否正确连接。

通过特殊的脉冲序列。
也可以用于交换连接双方的状态信息,如支持的工作模式和传输速率。

路由器

交换机是基于以太网设置的,路由器是基于IP设计的。

路由器的各个端口都具有MAC地址和IP地址。

路由表

路由表匹配时,只匹配网络号部分。

路由聚合

将路由表中多个子网合并为一个子网。

子网掩码列

表示匹配时需要对比的比特数量。

跃点计数

表示距离目标IP地址的远近。

路由表维护
  • 手动维护
  • 路由器之间信息交换

路由器接收包

路由器的一个接口相当于一个网卡。

选择,子网掩码长,跃点少。

接收之后MAC头部会被丢弃。

默认路由

子网掩码为0.0.0.0,为互联网接入路由器,当路由表中没有匹配到时转发到这里,这里配置的网关地址也叫默认网关。

更新TTL

每经过一个路由器转发,TTL(Time To Live)的值就会减一,为零时被丢弃。

分片处理

TCP的拆分,将数据分为包,IP的分片,将包再拆分,此时考虑MTU。

两种情况不分片:

  • 应用程序设置不允许分片
  • 包已经被分片

路由器发送包

规则取决于端口的类型。

重新添加MAC头部。

ARP,通过IP查MAC。

路由器与交换机之间的关系

就是IP与以太网之间的关系路由器将包的传输工作交给交换机进行。

IP不负责包的传送

只是委托各种通信技术将包传输到下一个路由器。

路由器的附加功能

主要是两个:

  • 地址过滤
  • 包过滤
内网

内网和外网。

内网的设立,解决地址不足的问题。

内网与内网之间是相互独立的,但不是完全独立。

内网的网络包只在内网之间流动。

作用于内网的地址叫私有地址(Globally Unique Address),原来的固定地址叫共有地址(Public Address)

私有地址范围:

  • 10.0.0.0~10.255.255.255
  • 172.16.0.0~172.31.255.255
  • 192.168.0.0~192.168.255.255

内网分两部分:

  • 对互联网开放的服务器。分配公有地址,可以和互联网直接通信。
  • 公司内部设备。分配私有地址,不能和互联网直接收发网络包。

地址转换机制,基本原理,在转发网络包时修改IP头部中的IP地址和端口号。

家庭网络中的过程也相同。

改写端口号,从空闲的端口中随机选择。

除非公司允许,无法从互联网向公司内网发送网络包,(对应表中无记录)具备防止非法入侵的效果。

可以将服务器的私有地址手动配置在地址转换设备中,就可以从互联网访问这个服务器了。

包过滤

路由器在对包进行转换时,根据MAC地址、IP地址、TCP头部的内容,按照事先设置好的规则决定是转发还是丢弃这个包。

防火墙设备或软件,大多利用这一机制。

hub解析

hub,轴。

现实可想象为,自行车轮,辐条从车轮边缘一直汇聚到轴处。

网络可想象为,网线聚集的地方。

小型廉价的普及型产品一般叫交换机,大型的高性能产品一般叫二层交换机。

光纤接入网

FTTH,Fiber To The Home,

ADSL

Asymmetric Digital Subscriber Line,不对称数字用户线,一种利用架设在电线杆上的金属电话线来进行高速通信的技术。

它的上行方向(用户到互联网)和下行方向(互联网到用户)的通信速率是不对称的。

双绞线的极限距离是100米,光纤可达几公里。


互联网中网络间的距离和路由的维护方式和家庭、公司不同。

Modem

调制解调器。

Modulator(调制器)和Demodulator(解调器)的简称。

调制,modulate,即把数字信号转换成电话线上传输的模拟信号。

解调,demodulate,把模拟信号转换成数字信号。

BAS

Broadband Access Server.宽带接入服务器,是一种路由器。

PPP

Point-to-Point Protocol,点到点协议。

三个头部,MAC头部、PPPoE头部、PPP头部。

ADSL Modem 对包的拆分

拆分为很多小格子,称信元。

信元是小数据块,包含5字节头部和48字节数据,用于ATM(Asynchronous Transfer Mode)异步传输

ADSL Modem对信号的调制

不用方波的原因:

  • 波形易失真
  • 难以控制噪声

调制为正弦波。
振幅调制ASK,相位调制PSK组成正交振幅调制QAM。

其将信元转换为电信号。

分离器,将电话信号和ADSL信号分离。

IDF(Intermediate Distribution Frame)中间配线盘,MDF(Main Distribution Frame)主配线盘。

保安器,防止雷电等情况下电话线中产生过大电流的一种保护装置,内部有保险丝。

信号线

直径不同,信号衰减率等待性不同。

线越细衰减率越高。

电缆隧道,地下电缆。

ISDN

Integrated Services Digital Network,综合业务数字网。

DSLAM

POP和NOC

都位于一个运营商中。

POP,Point Of Presense, 接入点。其本质是各种类型的路由器,取决于接入类型,还有交换机。

POP处的路由器需大量端口,其速率低于核心网络。

NOC,Network Operation Center, 网络运行中心,集中POP传来的包,可从这里转发至离目的地更近的POP或转发至其他运营商。

NOC和PO没有严格的界定。可以认为NOC是规模扩大的POP。

光纤铺设

地下。

光纤可以复用。

运营商之间的路由交换

相连的路由器告知路由信息。

转接,对等。

公司内部可采用最短路由。

运营商之间的路由交换需进行筛选。

BGP协议

Border Gateway Protocol.

IX

Internet eXchange,互联网交换中心。运营商线路的中心,相当于是集运营商之间一对一连接的线。

IX的核心是具有大量高速的以太网端口的二层交换机(基本原理和一层交换机相同)。

服务器和路由器

计算机都能完成路由器的工作,只要有相应的软件,一般路由器上安装的就是Linux操作系统。

第五章

防火墙原理

firewall。

根据MAC地址,IP头部,TCP头部的内容,来决定是转发还是丢弃。

只允许指定应用程序的网络包发送。

包过滤

通过接收方IP地址、发送方IP地址、接收方端口号、发送方端口号、TCP控制位这些条件,判断出通信的起点和终点、应用程序种类。

TCP连接时的三个包的控制位

第一个包,SYN为1,ACK为0.

用于阻止Web服务器为起点访问互联网。

无法阻止对DNS服务器的访问

使用UDP协议的都会有这样的问题。

只能二选一,要么允许该应用程序的所有包通过,要么阻止。

通过防火墙

被阻止的包会被丢弃并记录下来。

若允许通过,则转发。

防火墙无法抵御的攻击

需要检查内容的攻击。

防火墙无法检查包的内容。

方法,部署用来检查内容的设备或软件。

负载均衡

多台服务器分担负载,这种架构称分布式架构。

轮询分配

通过轮询(round-robin)的方式将访问平均分配给所有服务器

通过DNS服务器来实现。

通过DNS服务器查询服务器名称时,其返回多个IP地址。

负载均衡器

负载均衡的作用是分流,而难点在于判断什么时候不分流。

判断请求相关性的信息

在表单中加入表示关联的信息或在HTTP头部字段中加上用来判断相关性的信息(cookie).

使用缓存服务器分担负载

将整个系统按功能分成不同的服务器。

用户向缓存服务器发出请求,缓存服务器将请求保存在缓存中。

Via字段。

返回响应时可根据请求消息中URL的目录名判断。

数据积累。

如果请求内容在缓存中存在,返回If-Moified—Since头部字段,其中加上上次保存的时间,询问Web服务器在这个时间之后数据有没有发生变化。

代理的基本原理

在客户端和Web服务器之间充当中间人的方式就是代理的基本原理。

正向代理

forward proxy。
在客户端一侧部署缓存服务器。

可用来实现防火墙。代理可以查看请求的内容。

访问过的数据会被缓存。

在客户端设置了代理,会在URI部分填写完整的网址。

使用正向代理需要在浏览器中设置。

反向代理

reverse proxy。
类似于服务器端的缓存服务器。
正向代理的改良版。

透明代理

transparent proxy。
位于请求消息从浏览器传输到Web服务器的路径中,当消息经过时进行拦截。

客户端处的缓存服务器:

  • 降低流量消耗
  • 避免拥堵点

内容分发服务

CDS,Content Delivery Service。或CDN,Content Delivery Network or Content Distribution Network。

提供这种服务的厂商叫CDSN,Content Delivery Service Provider。

该服务时将Web服务器可以控制的缓存服务器放在客户端的运营商处。

让客户端找到最近的缓存服务器


现在的局域网用光纤连接,范围可以很大且速度快。

第六章

路由器和交换机不考虑请求包和响应包之间的关联。

一台服务器上可以运行多个服务器程序。

服务器程序的结构

每有一个客户端连接进来,就启动一个新的服务器程序,确保服务器程序和客户端是一对一的状态。

服务器程序启动时,读配置文件完成初始化。

程序分为两个模块:

  • 等待连接模块
  • 负责与客户端通信的模块

多任务,也可称为多进程,并发,就是一个处理器在多个程序之间快速切换。

客户端和服务器的区别

硬件部分有所不同,网络相关部分如网卡、协议栈等的功能是一样的,但用法上有差异。


连接无法单方面连接,需要有一方等待连接,另一方才能发起连接。

客户端发起连接时,要指定服务器端的端口号。

通信操作

套接字

调用listen向套接字写入等待信息,执行accept时,服务器端一般都处于包等待状态。连接时,创建一个等待连接的套接字的副本,写入连接对象等控制信息,并与客户端套接字连接在一起。

复制出一个新套接字之后,原来那个处于等待状态的套接字还会以等待状态继续存在。

关键点就是每次为新的连接创建新的套接字。

端口号是用来识别套接字的,新创建的套接字副本必需和原来等待连接的套接字具有相同的端口号。

以下四种信息判断套接字:

  • 客户端IP地址
  • 客户端端口号
  • 服务器IP地址
  • 服务器端口号

套接字中记录了当前时间点哪个程序正在与哪个对象进行通信。

应用程序之间使用描述符来指代套接字。

使用描述符来指代套接字的原因:

  • 等待连接的套接字中没有客户端的IP地址和端口号
  • 使用描述符这一信息比较简单

光电信号转换为数字信号

电信号和光信号转换为数字信号:

  1. 检测同步信号
  2. 延长时钟信号
  3. 分离时钟信号

IP模块处理数据包

协议栈的IP模块会检查IP头部:

  1. 判断是不是发给自己的
  2. 判断网络包有没有分片
  3. 将包转发给TCP或UTP模块

TCP模块处理数据包

如果收到的是发起连接的包,则TCP模块会:

  1. 确认TCP头部的控制位SYN
  2. 检查接收方的端口号
  3. 为相应的等待连接的套接字复制一个新的副本
  4. 记录发送方的IP地址和端口号等信息。

收到数据包:

  1. 根据收到的包的发送方的IP地址、发送方端口号、接收方IP地址、接收方端口号找到相应的套接字
  2. 将数据块拼合起来并保存在接受缓存区
  3. 想客户端返回他ACK号

断开连接,两边都可以发起,这里为服务器端:

  1. 调用Socket库的close,TCP生成FIN为1的头部
  2. 客户端接收后返回一个ACK,然后调用close,生成FIN为1的TCP头部发送给服务器
  3. 服务器返回ACK

Web服务器程序解释请求消息并做出响应

Web服务器公开的目录是虚拟目录。

文件名转换。

访问控制

常用在会员制的信息服务。
主要有以下3种:

  • 客户端IP地址
  • 客户端域名
  • 用户名和密码

查询域名:

  1. 协议栈将发送方的IP告知给Web服务器
  2. 服务器生成查询消息到最近的DNS服务器
  3. DNS服务器找出负责管辖该IP的DNS服务器并转发查询消息
  4. DNS服务器返回查询到的域名

返回响应

调用Socket库的write,将响应消息交给协议栈,并通过使用套接字描述符告知这个消息该发送给谁。

判断显示的数据类型和编码方式

Content-Type类型

charset表示编码方式。

Content-Encoding,转换方式。

浏览器显示内容

实际的显示操作是由操作系统来完成的,浏览器负责对操作系统发出指令。

整体图


网络是怎样连接的
http://example.com/2022/08/25/网络是怎样连接的/
作者
Jie
发布于
2022年8月25日
许可协议