设为首页
收藏本站
开启辅助访问
切换到窄版
快捷导航
登录
|
立即注册
门户
Portal
论坛
BBS
淘宝
腾讯
谷歌
雅虎
百度
搜狐
新浪
网易
京东
搜索
搜索
热搜:
活动
交友
discuz
本版
文章
帖子
用户
蓝色火焰
»
论坛
›
蓝色火焰
›
百度
›
访问百度过程中涉及到的网络
返回列表
访问百度过程中涉及到的网络
1
回复
148
查看
[复制链接]
微信扫一扫 分享朋友圈
德信成叉车
当前离线
积分
15
德信成叉车
4
主题
7
帖子
15
积分
新手上路
新手上路, 积分 15, 距离下一级还需 35 积分
新手上路, 积分 15, 距离下一级还需 35 积分
积分
15
发消息
发表于 2022-9-22 16:24:56
|
显示全部楼层
|
阅读模式
前置条件:
1、在客户端PC接入网络时,DHCP会自动分配本地DNS服务器地址
2、网络正常
大致访问流程:
客户端浏览器获取输入的域名:www.baidu.com
客户端浏览器向DNS请求解析www.baidu.com的IP地址
域名服务器解析出百度服务器的IP地址
客户端浏览器与该服务器建立TCP连接(默认端口号80)
浏览器发出HTTP请求,获取百度首页
服务器通过HTTP响应把首页文件发给浏览器
TCP四次挥手释放连接
浏览器对首页文件进行解析,展示web页
TCP/IP协议族涉及到的协议:
应用层:HTTP协议、DNS域名解析协议
传输层:TCP协议(为HTTP提供可靠的连接和数据传输)、udp(DNS使用udp传输)
网络层:IP(路由选择和数据包转发)、ARP协议(获取默认网关的mac地址)、ICMP协议(提供网络传输过程中的差错检测)
一、DNS协议
客户端浏览器中输入www.baidu.com,敲回车。从此步开始是DNS发挥作用的时候。
DNS查找大致过程:
客户端浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果
客户端的浏览器缓存
中有,这个解析过程就将结束。
如果客户端的浏览器缓存中没有,浏览器会查找
操作系统缓存(hosts文件)
中是否有这个域名对应的DNS解析结果。
若还没有,此时会发送一个数据包给
本地DNS服务器
,本地DNS服务器找到后将解析所得IP地址返回给用户。
本地DNS域名服务器没有域名对应IP的缓存记录
客户端会发出一个DNS请求,询问www.baidu.com对应的IP是多少,这个请求交给本地DNS服务器处理;
本地DNS服务器通过查询自己的缓存,缓存中没有记录,则此时本地DNS服务器会发送DNS请求给
根域服务器
。
本地DNS服务器向根域服务器发送DNS请求www.baidu.com对应的IP,此时根域发现顶级域名是.com,返回
.com顶级域服务器
地址给本地DNS服务器
本地DNS服务器继续发起请求给.com顶级域名服务器,顶级域名服务器返回次顶级域名服务器给本地DNS服务器,本地DNS服务器接着发起请求到
次顶级域名服务器(http://baidu.com)
向http://baidu.com域名服务器发起请求www.baidu.com对应的IP,baidu.comDNS查询后将对应的IP地址DNS响应本地DNS
最终本地DNS将IP地址以DNS协议回应给客户端,客户端知道了目标的IP,开始发起访问。(本地DNS会缓存得到的结果)
DNS查询方式有两种:
常用的方式是:客户端到本地DNS服务器采用递归查询,本地DNS服务器是采用迭代查询。
递归查询:
由DNS服务器向其他DNS服务器进行查询,将最终查询结果返回给DNS客户端。
迭代查询:
DNS服务器告知DNS客户端其他DNS服务器地址,客户端自行向其他DNS服务器进行查询。
二、ARP协议
当DNS域名解析得到对应域名对应的IP后,向http://www.baidu.com服务器发起访问。
IP通信原则:先判断网段
客户端会判断dns服务器IP是不是跟自己在同一个网段,根据自身的子网掩码计算自身所在的网段,然后用子网掩码计算baidu服务器IP的网段,发现不在同一网段,不同网段互通,必须依靠网关进行处理。
数据封装
当数据到了数据链路层封装时,源MAC是客户端的MAC地址,网关的MAC地址是多少,客户端是并不知道的,不知道的话,就没法
完成封装。
让客户端能够获取目标的MAC地址,完成封装,这个协议就是
ARP
。
ARP报文
在发送数据前,设备会先查找ARP缓存表。(ARP缓存用来存放
IP地址和MAC地址的关联信息
)
如果缓存表中存在对方设备的MAC地址,则直接采用该MAC地址来封装帧,然后将帧发送出去。
如果ARP缓存表中不存在相应信息,则通过ARP来获取。
总结来说:
客户端发送ARP request请求报文,报文封装在arp数据帧中,交换机收到后会泛洪转发(广播报文),网络内的所有主机和网关都会收到,当网关收到该请求报文,检查它的目的端IP地址字段与自身的IP地址匹配,则回复一个ARPreply单播报文,客户端填入目的mac地址后,完成二层数据封装。
1、客户端发送ARP Request来获取目的MAC地址。
2、ARP Request报文封装在以太帧里。帧头中的源MAC地址为发送端客户端的MAC地址。此时,由于客户端不知道网关的MAC地址,目的MAC地址为广播地址FF-FF-FF-FF-FF-FF。
3、ARP Request报文中包含发送端MAC地址、发送端IP地址、目的端MAC地址、目的端IP地址,其中目的端MAC地址的值为0。ARP Request报文会在整个网络上传播,该网络中所有主机包括网关都会接收到此ARP Request报文。
4、ARP Request是广播数据帧,因此交换机收到后,会对该帧执行泛洪操作。
5、接收到该ARP Request报文后,检查它的目的IP地址与自身的IP地址是否匹配。
6、发现IP地址匹配,则会将ARP报文中的发送端MAC地址和发送端IP地址信息记录到自己的ARP缓存表中。
三、IP协议
当二层完成封装后,把数据发往网关路由器。
网关路由器:
网关路由器:进行解封装,读取链路层数据,发现目标MAC地址是自己;继续解封装,读取IP层数据,发现目的IP地址不是自己;由于路由器具有
路由功能
,此时路由器执行操作,查询路由表,路由器会查询自己路由表是否有符合要求的路由项,符合转发,不符合则丢弃
路由:
路由是
指导报文转发的路径信息
,通过路由可以确认转发IP报文的路径。
路由表:
路由中包含以下信息:
Destination/Mask Proto Pre Cost Flags NextHop Interface
目的网络地址/掩码长度 协议类型 路由优先级 开销(度量值) 标志 下一跳地址 出接口
这些信息标识了目的网段、明确了转发IP报文的路径。
Destination/Mask:
表示此路由的目的网络地址与网络掩码。将目的地址和子网掩码“逻辑与”后可得到目的主机或路由器所在网段的地址。
Proto(Protocol):
该路由的协议类型,也即路由器是通过什么协议获知该路由的。
Pre(Preference):表示此路由的路由协议优先级。针对同一目的地,可能存在不同下一跳、出接口等多条路由。
优先级最高(数值最小)者将成为当前的最优路由。
Cost:路由开销。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将成为当前的最优路由。
NextHop:
表示对于本路由器而言,到达该路由指向的目的网络的下一跳地址。该字段指明了数据转发的下一个设备。
Interface:
表示此路由的出接口。指明数据将从本路由器的哪个接口转发出去。
路由表表项的来源是:
直连路由:
前提是连接的接口状态是UP
直连接口所在网段的路由,由设备自动生成。
一般使用直连路由的,报文的目的IP和路由器接口IP在一个网段之中。
静态路由:
由网络管理员手工配置的路由条目
动态路由:
路由器通过动态路由协议(如OSPF、IS-IS、BGP等)学习到的路由
缺省路由
缺省路由是一种特殊的路由,当
报文没有在路由表中找到匹配
的具体路由表项时才使用的路由。如果报文的目的地址不能与路由表的任何目的地址相匹配,那么该报文将选取缺省路由进行转发。
缺省路由在路由表中的形式为
0.0.0.0/0
,缺省路由也被叫做默认路由。
路由表匹配原则:
路由优先级:
当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,路由器会比较这些路由的优先级,优选优先级值最小的路由。
路由来源的优先级值(Preference)越小代表加入路由表的优先级越高。
开销:
前提:当路由器通过某种路由协议发现了多条到达同一个目的网络的路由时(拥有相同的路由优先级)
度量值数值越小越优先,度量值最小路由将会被添加到路由表中。
一些常用的度量值有:跳数、带宽、时延、代价、负载、可靠性等。
路由转发:
当路由器收到一个IP数据包时,会将数据包的目的IP地址与自己本地路由表中的所有路由表项进行逐位(Bit-By-Bit)比对,直到找到匹配度最长的条目,这就是最长前缀匹配机制。
在路由转发的过程中无论经过多少个中间路由器,对于数据的处理原则都是如此。
四、NAT
由于客户端访问的网段不在内网,需要访问外网就必须在网络出口设备配置NAT,将访问Internet的IP数据报文中的私有网络源地址转换成公有网络源地址。
1、静态NAT转换
静态NAT:私有地址和公有地址之间的关系是一对一映射。
2、动态NAT转换
避免浪费公网地址,把所有可用的公有地址组成地址池。
当内部主机访问外部网络时临时分配一个地址池中未使用的地址,并将该地址标记为“In Use”。
当该主机不再访问外部网络时回收分配的地址,重新标记为“Not Use”。
3、NAPT
(Network Address and Port Translation,网络地址端口转换)
从地址池中选择地址进行地址转换时不仅转换IP地址,同时也会对端口号进行转换,从而实现公有地址与私有地址的1:n映射,可以有效提高公有地址利用率。
五、传输层:TCP协议
当客户端浏览器拿到baidu的服务器IP后,会发起HTTP请求,而HTTP协议是基于TCP协议的。
因此,在进行 HTTP 请求之前,浏览器还需要与百度服务器进行三次握手,建立 TCP 连接。
建立TCP连接:默认端口号80端口
TCP报文段需要设置端口
,接收方(百度)的HTTP端口默认是80
,
本机的端口是一个1024-65535之间的随机整数,这里假设为1025
,
TCP报文段由TCP首部(包含
发送方和接收方的端口信息
)+ HTTP数据包组成。
四次挥手释放
当服务器把HTTP响应发送给浏览器,TCP连接释放
六、HTTP协议
HTTP请求
在应用层,浏览器会给百度web服务器发送一个HTTP请求;
请求头为:GET
post
HTTP响应
服务器响应数据发送给客户端浏览器
,即百度首页数据。
请求处理完成之后,服务器发回一个HTTP响应;
回复
使用道具
举报
曹小刀
当前离线
积分
16
曹小刀
2
主题
10
帖子
16
积分
新手上路
新手上路, 积分 16, 距离下一级还需 34 积分
新手上路, 积分 16, 距离下一级还需 34 积分
积分
16
发消息
发表于 2025-3-15 14:30:02
|
显示全部楼层
报告!别开枪,我就是路过来看看的。。。
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
网易
谷歌
快速回复
返回顶部
返回列表