网络是怎么连接的学习总结

总览

(1) 浏览器向 Web 服务器发送请求。
(2) Web 服务器根据请求向浏览器发送响应。
负责搬运数字信息的机制,再加上浏览器和 Web 服务器这些网络应用程序,就组成了网络。
在这里插入图片描述

第一章

(1)生成 HTTP 请求消息

浏览器是一个具备多种客户端功能的综合性客户端软件,因此它需要一些东西来判断应该使用其中哪种功能来访问相应的数据,而各种不同的URL(Uniform Resource Locator,统一资源定位符)就是用来干这个的。比如访问 Web 服务器时用“ http:”, 而访问 FTP服务器时用“ ftp:”,HTTP协议(Hypertext Transfer Protocol,超文本传送协议)。HTTP 协议定义了客户端和服务器之间交互的消息内容和步骤,而访问 FTP 服务器时则应该使用 FTP 协议。
浏览器的第一步工作就是对 URL 进行解析。HTTP协议请求消息中包含的内容是“ 对什么” 和“ 进行怎样的操作” 两个部分。其中相当于“ 对什么” 的部分称为 URI。一般来说,URI 的内容是一个存放网页数据的文件名或者是一个 CGI 程序的文件名例如“ /dir1/file1.html”和“ /dir1/program1.cgi” 等。相当于接下来“ 进行怎样的操作” 的部分称为方法。如GET、 POST 、PUT等。

(2)向 DNS 服务器查询 Web 服务器的 IP 地址

DNS:Domain Name System,域名服务系统
用集线器连接起来的几台计算机,我们将其看做一个单位,称为子网。用路由器将子网连接起来,就形成了一个网络。将网络号分配给整个子网,将主机号分配给子网中的计算机,这个地址的整体称为IP地址。
Socket 库是用于调用网络功能的程序组件集合。根据域名查询 IP 地址时,浏览器会使用 Socket 库中的解析器。

(3)全世界 DNS 服务器的大接力

DNS 服务器会从域名与 IP 地址的对照表中查找相应的记录,并返回 IP 地址。DNS 服务器中的所有信息都是按照域名以分层次的结构来保存的。客户端首先会访问最近的一台 DNS 服务器,找不到的话直接访问根域服务器,然后逐级向下查找,直到找到要访问域名的IP。

(4)委托协议栈发送消息

网络控制软件叫做协议栈,是操作系统的一部分。向操作系统内部的协议栈发出委托时,需要按照指定的顺序来调用 Socket 库中的程序组件。应用程序是通过“描述符”这一类似号码牌的东西来识别套接字的。
描述符:应用程序用来识别套接字的机制
IP 地址和端口号:客户端和服务器之间用来识别对方套接字的机制

第二章

在这里插入图片描述
最上面的部分是网络应用程序。下面是 Socket 库,其中包括解析器,解析器用来向 DNS服务器发出查询。再下面就是操作系统内部的协议栈了,TCP/UDP(接受应用程序的委托执行收发数据的操作)和IP(控制网络包收发操作);此外,IP 中还包括 ICMP 协议和 ARP 协议。ICMP 用于告知网络包传送过程中产生的错误以及各种控制消息,ARP 用于根据 IP 地址查询相应的以太网 MAC 地址。IP 下面的网卡驱动程序负责控制网卡硬件,而最下面的网卡则负责完成实际的收发操作,也就是对网线中的信号执行发送和接收的操作。

(1)创建套接字

套接字的实体就是通信控制信息。或者说存放控制信息的内存空间就是套接字的实体。套接字中记录了用于控制通信操作的各种控制信息,协议栈则需要根据这些信息判断下一步的行动,这就是套接字的作用。

(2)连接服务器

连接实际上是通信双方交换控制信息,在套接字中记录这些必要信息并准备数据收发的一连串操作。控制信息分为两类:
第一类是客户端和服务器相互联络时交换的控制信息,头部是用来记录和交换控制信息的。另一类就是保存在套接字中,用来控制协议栈操作的信息。
连接操作被称为“三次握手四次挥手”

(3)收发数据

在协议栈看来,要发送的数据就是一定长度的二进制字节序列而已。协议栈并不是一收到数据就马上发送出去,而是会将数据存放在内部的发送缓冲区中,根据数据长度和时间判断是否发送。TCP 具备确认对方是否成功收到网络包,以及当对方没收到时进行重发的功能,通过“序号”和“ACK 号”可以确认接收方是否收到了网络包。
根据网络包平均往返时间调整ACK号。
使用窗口有效管理ACK号,接收方需要告诉发送方自己最多能接收多少数据,然后发送方根据这个值对数据发送操作进行控制,这就是滑动窗口方式的基本思路。
将ACK号和窗口合并,减少网络中包的数量。

(4)从服务器断开连接并删除套接字

数据发送完毕后断开连接,同“三次握手,四次挥手”。

(5)IP 与以太网的包收发操作

包是由头部和数据两部分构成的。头部包含目的地址等控制信息,大家可以把它理解为快递包裹的面单;头部后面就是委托方要发送给对方的数据,也就相当于快递包裹里的货物。IP 模块负责添加如下两个头部。(1)MAC 头部:以太网用的头部,包含 MAC 地址(2)IP 头部:IP 用的头部,包含 IP 地址。无论要收发的包是控制包还是数据包,IP 对各种类型的包的收发操作都是相同的。
IP 地址实际上并不是分配给计算机的, 而是分配给网卡的, 因此当计算机上存在多块网卡时, 每一块网卡都会有自己的 IP 地址。IP 头部的“接收方 IP 地址”填写通信对象的 IP 地址。发送方 IP 地址需要判断发送所使用的网卡,并填写该网卡的 IP地址。IP 模块根据路由表 Gateway 栏的内容判断应该把包发送给谁。查询 MAC 地址需要使用 ARP(Address Resolution Protocol,地址解析协议。)
尽管以太网经历了数次变迁,但其基本的 3 个性质至今仍未改变,即将包发送到 MAC 头部的接收方 MAC 地址代表的目的地,用发送方 MAC地址识别发送方,用以太类型识别包的内容。网卡的 ROM 中保存着全世界唯一的 MAC 地址,这是在生产网卡时写入的。网卡中保存的 MAC 地址会由网卡驱动程序读取并分配给 MAC模块。
网卡在网络包的开头加上报头和起始帧分界符(用来测量时钟信号的特殊信号),在末尾加上用于检测错误的帧校验序列。网卡的 MAC 模块生成通用信号,然后由 PHY(MAU)模块转换成可在网线中传输的格式,并通过网线发送出去。
因为我们需要将数据高效且可靠地发送给对方,所以需要设计复杂的TCP。UDP 没有 TCP 的接收确认、窗口等机制,因此在收发数据之前也不需要交换控制信息,也就是说不需要建立和断开连接的步骤,不对包的送达状态进行监控。

第三章

每个包都是独立传输的,防止网线中的信号衰减很重要,“双绞”是为了抑制噪声。集线器将信号发送到所有线路。

第五章

(1)Web 服务器的部署地点

三种部署方式:和互联网直接相连,通过防火墙隔离相连,接入服务商数据中心。

(2)防火墙的结构和原理

防火墙可分为包过滤、应用层网关、电路层网关等几种方式。现在最为普及的是包过滤方式
防火墙可以根据包的起点和终点来判断是否允许其通过,但仅凭起点和终点并不能筛选出所有有风险的包。
风险存在问题的根源在于 Web 服务器程序的Bug,因此修复 Bug 防止宕机就是其中一种方法。另一种方法就是在防火墙之外部署用来检查包的内容并阻止有害包的设备或软件

(3)通过将请求平均分配给多台服务器来平衡负载

当很多用户同时访问时,无论服务器的性能再好,仅靠一台服务器还是难以胜任的。在这种情况下,使用多台服务器来分担负载的方法更有效。这种架构统称为分布式架构。例如,对于域名 www.lab.glasscom.com,如果我们给它分配如下 3 个 IP 地址。每次访问其中的一个,这种方式称为轮询( round-robin),通过这种方式可以将访问平均分配给所有的服务器。

(4)利用缓存服务器分担负载

除了使用多台功能相同的 Web 服务器分担负载之外,还有另外一种方法,就是将整个系统按功能分成不同的服务器,如 Web 服务器、数据库服务器。缓存服务器就是一种按功能来分担负载的方法。正向代理,反向代理,透明代理又叫缓存

(5)内容分发服务

将缓存服务器部署在Web服务器之前,可以降低web服务器的负载,但无法减少网络流量。
将缓存服务器部署在客户端,减少网络流量的效果较好,但web服务器运营者无法控制位于客户端的缓存服务器。将缓存服务器部署在互联网的边缘。可以降低网络流量,而且服务器运营者可以控制缓存服务器
作为一个 Web 服务器运营者,如果自己和这些运营商签约并部署缓存服务器,无论是费用还是精力都是吃不消的。为了解决这个问题, 一些专门从事相关服务的厂商出现了,他们来部署缓存服务器,并租借给 Web 服务器运营者。这种服务称为内容分发服务

第六章

(1)服务器概览

每有一个客户端连接进来,就启动一个新的服务器程序(套接字),确保服务器程序和客户端是一对一的状态。服务器操作系统具有多任务、 多线程功能,可以同时运行多个程序 ,服务器程序的设计正是利用了这一功能。为了能够支持各种形态的应用,最好是在数据收发层面不需要区分客户端和服务器, 而是能够以左右对称的方式自由发送数据。从数据收发的角度来看,这就是客户端与服务器的区别,也就是说,发起连接的一方是客户端,等待连接的一方是服务器。

(2)服务器的接收操作

接收操作的第一步是网卡接收到信号,然后将其还原成数字信息。局域网中传输的网络包信号是由 1 和 0 组成的数字信息与用来同步的时钟信号叠加而成的。服务器接收电信号的过程和客户端发送的过程相反,是从模拟信息转换为数字信息。
在这里插入图片描述

  1. 网卡的 MAC 模块将网络包从信号还原为数字信息,校验 FCS并存入缓冲区。

  2. 网卡驱动会根据 MAC 头部判断协议类型,并将包交给相应的协议栈。

  3. 协议栈的 IP 模块会检查 IP 头部,(1)判断是不是发给自己的;(2)判断网络包是否经过分片;(3)将包转交给 TCP 模块或 UDP模块。

  4. TCP模块
    如果收到的是发起连接的包,则 TCP 模块会(1)确认 TCP 头部的控制位 SYN;(2)检查接收方端口号;(3)为相应的等待连接套接字复制一个新的副本;(4)记录发送方 IP 地址和端口号等信息。
    如果收到的是数据包,TCP 模块会(1)根据收到的包的发送方 IP 地址、发送方端口号、接收方 IP地址、接收方端口号找到相对应的套接字;(2)将数据块拼合起来并保存在接收缓冲区中;(3)向客户端返回 ACK。

(3)Web 服务器程序解释请求消息并作出响应

Web 服务器的基本工作方式就是根据请求消息的内容判断数据源, 并从中获取数据返回给客户端。将请求的 URI 转换为实际的文件名,返回文件。当请求内容为CGI程序时,会运行这个程序, 然后将程序输出的数据返回给客户端。Web 服务器还可以检查事先设置的一些规则,并根据规则允许或禁止访问。

(4)浏览器接收响应消息并显示内容

判断数据类型,解析HTML文档

总结

在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值