凡科建设网站的步骤,长沙房产交易中心官网,个人网站建设yxhuying,广卅网络设计公司文章目录 HTTPDNS五层协议TCPIPMAC网卡#xff08;物理层#xff09;交换机路由器 HTTP
对 URL 进行解析之后#xff0c;浏览器确定了 Web 服务器和文件名#xff0c;接下来就是根据这些信息来生成 HTTP 请求消息了。
http://www.server.com/dir1/file1.html
http:访问数… 文章目录 HTTPDNS五层协议TCPIPMAC网卡物理层交换机路由器 HTTP
对 URL 进行解析之后浏览器确定了 Web 服务器和文件名接下来就是根据这些信息来生成 HTTP 请求消息了。
http://www.server.com/dir1/file1.html
http:访问数据的协议
www.server.com:服务器
dir1:目录名
file1.html:文件名生产 HTTP 请求信息 DNS
查询服务器域名对应的 IP 地址。比如 www.server.com域名这里的句点代表了不同层次之间的界限。在域名中越靠右的位置表示其层级越高。所以域名的层级关系类似一个树状结构 根 DNS 服务器.顶级域 DNS 服务器.com权威 DNS 服务器server.com 根域的 DNS 服务器信息保存在互联网中所有的 DNS 服务器中。这样一来任何 DNS 服务器就都可以找到并访问根域 DNS 服务器了。 域名解析的工作流程 客户端首先会发出一个 DNS 请求问 www.server.com 的 IP 是啥并发给本地 DNS 服务器也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址。本地域名服务器收到客户端的请求后如果缓存里的表格能找到 www.server.com则它直接返回 IP 地址。如果没有本地 DNS 会去问它的根域名服务器“老大 能告诉我 www.server.com 的 IP 地址吗” 根域名服务器是最高层次的它不直接用于域名解析但能指明一条道路。根 DNS 收到来自本地 DNS 的请求后发现后置是 .com说“www.server.com 这个域名归 .com 区域管理”我给你 .com 顶级域名服务器地址给你你去问问它吧。”本地 DNS 收到顶级域名服务器的地址后发起请求问“老二 你能告诉我 www.server.com 的 IP 地址吗”顶级域名服务器说“我给你负责 www.server.com 区域的权威 DNS 服务器的地址你去问它应该能问到”。本地 DNS 于是转向问权威 DNS 服务器“老三www.server.com对应的IP是啥呀” server.com 的权威 DNS 服务器它是域名解析结果的原出处。为啥叫权威呢就是我的域名我做主。权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。本地 DNS 再将 IP 地址返回客户端客户端和目标建立连接。 每次解析域名都要经过那么多的步骤呢 浏览器会先看自身有没有对这个域名的缓存如果有就直接返回如果没有就去问操作系统操作系统也会去看自己的缓存如果有就直接返回如果没有再去 hosts 文件看也没有才会去问「本地 DNS 服务器」。 五层协议 通过 DNS 获取到 IP 后就可以把 HTTP 的传输工作交给操作系统中的协议栈。 应用程序浏览器通过调用 Socket 库来委托协议栈工作。协议栈的上半部分有两块分别是负责收发数据的 TCP 和 UDP 协议这两个传输协议会接受应用层的委托执行收发数据的操作。 协议栈的下面一半是用 IP 协议控制网络包收发操作 IP 中还包括 ICMP 协议和 ARP 协议。 ICMP 用于告知网络包传送过程中产生的错误以及各种控制信息。ARP 用于根据 IP 地址查询相应的以太网 MAC 地址。 IP 下面的网卡驱动程序负责控制网卡硬件而最下面的网卡则负责完成实际的收发操作也就是对网线中的信号执行发送和接收操作。
TCP
HTTP 是基于 TCP 协议传输的。
源端口号和目标端口号主要表明发送给哪一个应用上的序号这个是为了解决包乱序的问题。确认号目的是确认发出去对方是否有收到。如果没有收到就应该重新发送直到送达这个是为了解决丢包的问题。状态位例如 SYN 是发起一个连接ACK 是回复RST 是重新连接FIN 是结束连接等。TCP 是面向连接的因而双方要维护连接的状态这些带状态位的包的发送会引起双方的状态变更。窗口大小TCP 要做流量控制通信双方各声明一个窗口缓存大小标识自己当前能够的处理能力别发送的太快,也别发的太慢。拥塞控制对于真正的通路堵车不堵车它无能为力唯一能做的就是控制自己也即控制发送的速度。 TCP 传输数据之前要先三次握手建立连接 三次握手目的是保证双方都有发送和接收的能力。TCP 的连接状态查看在 Linux 可以通过 netstat -napt 命令查看。route -n 命令查看当前系统的路由表。arp -a 命令来查看 ARP 缓存的内容。 流程 客户端和服务端都处于 CLOSED 状态。先是服务端主动监听某个端口处于 LISTEN 状态。然后客户端主动发起连接 SYN之后处于 SYN-SENT 状态。服务端收到发起的连接返回 SYN并且 ACK 客户端的 SYN之后处于 SYN-RCVD 状态。客户端收到服务端发送的 SYN 和 ACK 之后发送对 SYN 确认的 ACK之后处于 ESTABLISHED 状态因为它一发一收成功了。服务端收到 ACK 的 ACK 之后处于 ESTABLISHED 状态因为它也一发一收了。 TCP 分割数据 MTU一个网络包的最大长度以太网中一般为 1500 字节。MSS除去 IP 和 TCP 头部之后一个网络包所能容纳的 TCP 数据的最大长度。 IP IP 协议里面需要有源地址 IP 和 目标地址 IP 源地址IP即是客户端输出的 IP 地址目标地址即通过 DNS 域名解析得到的 Web 服务器 IP。 当客户端有多个网卡时就会有多个IP地址此时需要通过路由表规则来判断哪一个网卡作为源地址的IP目标IP与子网掩码与操作获取网络号然后查路由表 首先先和第一条目的子网掩码Genmask进行 与运算得到结果为 192.168.10.0但是第一个条目的 Destination 是 192.168.3.0两者不一致所以匹配失败。Web 服务器的目标地址是 10.100.20.100那么依然依照上面的路由表规则判断判断后的结果是和第三条目匹配。 IP报文生成 MAC
在 MAC 包头里需要发送方 MAC 地址和接收方目标 MAC 地址用于两点之间的传输。还有协议类型一般在 TCP/IP 通信里MAC 包头的协议类型只使用 0800 IP 协议0806 ARP 协议 源MAC获取网卡生产时写入到 ROM 里的目标MAC获取ARP协议通过广播的形式获取 后续操作系统会把本次查询结果放到一块叫做 ARP 缓存的内存空间留着以后用不过缓存的时间就几分钟。 生成MAC地址 网卡物理层
网络包只是存放在内存中的一串二进制数字信息需要将数字信息转换为电信号才能在网线上传输负责执行这一操作的是网卡要控制网卡还需要靠网卡驱动程序。网卡驱动获取网络包之后会将其复制到网卡内的缓存区中接着会在其开头加上报头和起始帧分界符在末尾加上用于检测错误的帧校验序列。 起始帧分界符是一个用来表示包起始位置的标记末尾的 FCS帧校验序列用来检查包传输过程是否有损坏
交换机
电信号到达网线接口交换机里的模块进行接收将交换机里的模块将电信号转换为数字信号。然后通过包末尾的 FCS 校验错误如果没问题则放到缓冲区这部分操作基本和计算机的网卡相同但交换机的工作方式和网卡不同。不同点 计算机的网卡本身具有 MAC 地址并通过核对收到的包的接收方 MAC 地址判断是不是发给自己的如果不是发给自己的则丢弃相对地交换机的端口不核对接收方 MAC 地址而是直接接收所有的包并存放到缓冲区中。因此和网卡不同交换机的端口不具有 MAC 地址。 交换机作用 交换机使用MAC地址来实现数据包的转发。交换机维护一个MAC地址表记录每个设备的MAC地址和它所连的端口当收到一个数据包时交换机会查找MAC地址表将数据包转发到目标设备所在的端口。因此交换机在数据链路层使用MAC地址来实现局域网内设备之间的通信。交换机的 MAC 地址表主要包含两个信息 一个是设备的 MAC 地址另一个是该设备连接在交换机的哪个端口上。 当 MAC 地址表找不到指定的 MAC 地址会怎么样 交换机无法判断应该把包转发到哪个端口只能将包转发到除了源端口之外的所有端口上无论该设备连接在哪个端口上都能收到这个包。 会不会出现网络拥塞 只有相应的接收者才接收包而其他设备则会忽略这个包。而且发送了包之后目标设备会作出响应只要返回了响应包交换机就可以将它的地址写入 MAC 地址表下次也就不需要把包发到所有端口了。 路由器
路由器和交换机原理类似也是通过查表判断包转发的目标。路由器和交换机区别。 因为路由器是基于 IP 设计的俗称三层网络设备路由器的各个端口都具有 MAC 地址和 IP 地址而交换机是基于以太网设计的俗称二层网络设备交换机的端口不具有 MAC 地址。 流程 路由器工作原理 当转发包时首先路由器端口会接收发给自己的以太网包然后路由表查询转发目标再由相应的端口作为发送方将以太网包发送出去。 路由器的包接收操作 电信号到达网线接口部分路由器中的模块会将电信号转成数字信号然后通过包末尾的 FCS 进行错误校验。如果没问题则检查 MAC 头部中的接收方 MAC 地址看看是不是发给自己的包如果是就放到接收缓冲区中否则就丢弃这个包。 查询路由表确定输出端口 完成包接收操作之后路由器就会去掉包开头的 MAC 头部。路由器会根据 MAC 头部后方的 IP 头部中的内容进行包的转发操作。通过路由表查询转发的目标 例子10.10.1.101 的计算机要向地址为 192.168.1.100 的服务器发送一个包 每个条目的子网掩码和 192.168.1.100 IP 做 与运算后得到结果是 192.168.1.0 这与第二条目的目标地址 192.168.1.0 匹配该第二条目记录就会被作为转发目标。 实在找不到匹配路由时就会选择默认路由路由表中子网掩码为 0.0.0.0 的记录表示「默认路由」 路由器的发送操作 根据路由表的网关列判断对方的地址。 如果网关是一个 IP 地址则这个IP 地址就是我们要转发到的目标地址还未抵达终点还需继续需要路由器转发。如果网关为空则 IP 头部中的接收方 IP 地址就是要转发到的目标地址也是就终于找到 IP 包头里的目标地址了说明已抵达终点。 知道对方的 IP 地址之后接下来需要通过 ARP 协议根据 IP 地址查询 MAC 地址并将查询的结果作为接收方 MAC 地址。发送出去的网络包会通过交换机到达下一个路由器。由于接收方 MAC 地址就是下一个路由器的地址所以交换机会根据这一地址将包传输到下一个路由器。 源 IP 和目标 IP 始终是不会变的一直变化的是 MAC 地址因为需要 MAC 地址在以太网内进行两个设备之间的包传输。 文章参考https://xiaolincoding.com/