1. 局域网用户上网原理

上网过程说明:

  1. 确保物理设备和线路架构准备完毕,并且线路通讯状态良好
  2. 终端设备需要获取或配置上局域网(私有地址)地址,作为局域网网络标识
  3. 当终端设备想上网时,首先确认访问的地址,是否在本局域网内,若不在需要先告知网关
  4. 网关地址配置在路由器的内网接口上,路由器根据请求,将流量进行路由转发给外网设备,让外网设备协助进行流量转发。 需要注意:家用路由器实际上并不是路由器,而是一个NAT地址转换设备。
  5. 猫等运营商设备通过获取路由器的拨号信息,将信息进行上传,确认无误后,便可建立路由器与外网的连接,进行实现终端访问互联网的需求。
 

2. 用户访问网站的详细流程

 

在浏览器输入想要访问的域名之后,浏览器会进行域名解析获得IP地址,在经过TCP的连接,实现数据的传输就会有两种报文,及请求报文和响应报文

最终才能实现通信。

因此想要实现通信,就得先弄懂DNS的解析原理以及TCP连接通道的流程。

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去+·记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

DNS协议运行在UDP协议之上,使用端口号53。访问网站的实质就是解析其域名得到IP地址,再转向其网站。

 

1、客户端在浏览器中输入要访问的域名地址,如:www.baidu.com

2、浏览器请求解析DNS服务器,把域名www.baidu.com 转换成web服务器的IP地址。

1)系统首先会查找本地的DNS缓存和hosts文件信息,确认其中是否有与,域名www.baidu.com所对应的IP地址。如果有,就直接访问这个IP地址所对应的www.baidu.com 域名服务器。

2)如果没有找到,那么,系统将会把浏览器的解析请求发送给本地主机所指定的DNS服务器,称为LDNS。如果LDNS服务器中有域名www.baidu.com 所对应的IP地址,则返回给客户端的浏览器,如果没有,则继续请求其他DNS服务器。

3)LDNS服务器会从DNS系统的根(.)开始请求对域名www.baidu.com 的解析。根DNS服务器全球只有13台,根域名服务器是没有域名www.baidu.com 解析记录的。但是它会有域名www.baidu.com 所对应的顶级域.com的解析记录,因此直接把顶级域.com所对应的DNS地址返回给LDNS服务器。

4)LDNS服务器获取到顶级域.com对应的DNS服务器地址后,就会去.com服务器请求对www.baidu.com 域名的解析。在顶级域名服务器也不会有www.baidu.com 的解析记录的。但是它有www.baidu.com 的父级域名,即baidu.com。因此顶级域名.com服务器又会把baidu.com所对应的DNS服务器的IP地址返回给LDNS。

5)LDNS服务器收到baidu.com所对应的IP地址后,就会去baidu.com域名服务器请求对www.baidu.com 的域名解析。Baidu.com域名对应的DNS服务器是该域名的授权DNS服务器。这个DNS服务器就是企业购买域名时用于管理解析的服务器。

6)baidu.com域名DNS服务器会吧www.baidu.com 域名所对应的IP地址给解析出来,然后发给LDNS。

7)LDNS把解析出来的结果,www.baudu.com 所对应的IP地址发送给客户端的浏览器。并且LDNS也会将其域名和对应的地址缓存到cache中。

8)客户端浏览器收到后,也会将其域名以及对应的IP地址缓存的到DNS缓存和hosts文件中。

3、浏览器从访问的IP地址(URL)解析出默认的端口号:80

4、浏览器通过解析后得到的IP地址和端口号进行web服务器建立一条TCP连接通道。

1)第一次握手:

建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

2)第二次握手:

服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

3)第三次握手:

客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

5、建立TCP连接之后,浏览器向web服务器发送一条HTTP请求报文。

1)请求行

作用:用来说明客户端想要做什么。

内容:包括方法字段GET和URL字段以及HTTP协议版本

2)请求头

作用:通过客户端把请求的相关信息发给服务器

内容:包括媒体类型、语言类型、支持压缩、客户端类型、主机等信息。

3)空行

作用:告诉服务器空行以下内容不属于请求头部信息。

4)请求报文主体

作用:用来说明客户端具体想要做的事情。

内容:查看信息、应用post方法。

6、web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。

1)状态行

作用:用来说明服务端响应客户端的状态。

内容:包括洗衣及版本号、数字状态码、状态情况

2)响应头

作用:通过服务端把响应的相关信息给客户端

内容:包括Location、server、connect、vary等

3)空行

作用:告诉客户端空行以下内容不属于响应头部信息。

4)响应报文主体

作用:用来装载着要返回给客户端的数据

内容:包括文本、html、视频或者是图片。

7、web服务器关闭HTTP连接,关闭TCP连接,web服务器显示访问的网站内容到屏幕上。

1)第一次挥手:

客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。

2)第二次挥手:

服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

3)第三次挥手:

服务器B关闭与客户端A的连接,发送一个FIN给客户端A。

4)第四次挥手:

客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

【Linux网络基础】上网原理流程的更多相关文章

  1. Linux网络基础-总

    目录 Linux网络基础 一.网卡和数据包的转发 1.收包流程 二.多网卡bonding 三.SR-IOV 四.DPDK 五.TUN/TAP 六.Linux bridge 和VLAN 七.TCP/IP ...

  2. Linux网络基础配置

    这是看itercast视频的笔记 Linux网络基础配置 以太网连接 在Linux中,以太网接口被命令为:eth0, eth1等, 0,1代表网卡编号 通过lspci命令可以查看网上硬件信息(如果是u ...

  3. Linux网络服务01——Linux网络基础设置

    Linux网络服务01--Linux网络基础设置 一.查看及测试网络 1.使用ifconfig命令查看网络接口 (1)查看活动的网络接口 ifconfig命令 [root@crushlinux ~]# ...

  4. linux网络基础设置 以及 软件安装

    ifconfig #查看所有已激活的网卡信息 临时配置 #yum install net-tools -y 默认ifconfig是没有安装的,可能需要安装 ifconfig eth0 #查看单独一块网 ...

  5. Linux高性能server编程——Linux网络基础API及应用

     Linux网络编程基础API 具体介绍了socket地址意义极其API,在介绍数据读写API部分引入一个有关带外数据发送和接收的程序,最后还介绍了其它一些辅助API. socket地址API 主 ...

  6. Linux基础-7.Linux网络基础设置

    装好Linux,Linux一般会默认使用NetworkManager来辅助管理网络配置.对于配置Linux服务器来说,我们不需要NetworkManager来配置网络,所以要关闭它,不然它会影响手动配 ...

  7. 【Linux网络基础】网络拓扑、OSI层次模型、TCP/IP协议簇

    一.前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工作来说这些并不是重点,因此,我不可能从最基础的网络知识开始讲起.本节内容更多是从一个梳理和 ...

  8. Linux网络基础

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3840284.html ...

  9. 【Linux网络基础】 DNS:介绍、作用、解析原理

    1. DNS是什么?   DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去+·记住能够被机器直接读 ...

随机推荐

  1. SWUSTOJ 509B 恶心了几个月想不通的low题

    SWUSTOJ 509B 这个题恶心了我好久,细细算来不难,算总天数,减去星期一,与4取余, 问题在最后除掉多余的星期一,按照上述算法,在最后一个星期会出现过了星期一但不足7天,程序未能减去多余的星期 ...

  2. 三角函数在Three.js中的点的移动轨迹应用

    在学习2D文字的时候,看到官网有这样一个示例: https://threejs.org/examples/#css2d_label ![](https://img2018.cnblogs.com/bl ...

  3. echarts图表x,y轴的设置

    https://www.cnblogs.com/cjh-strive/p/11065005.html xAxis属性代表echarts图表的x轴设置代码如下 xAxis : [ { type : 'c ...

  4. c期末笔记(3)

    参数于模运算 1.实参与形参易错点 实参与形参之间是值传递. 实参&形参 实参可以是:常量,表达式或者变量 形参只能是变量 指针和指针变量 1.指针的定义 指针的定义形式:int*p = &a ...

  5. Python 1基础语法一(注释、行与缩进、多行语句、空行和代码组)

    一.注释Python中单行注释以 # 开头,实例如下: # 第一个注释 print ("Hello, Python!") # 第二个注释 输出结果为: ============== ...

  6. node实现防盗链

    什么是防盗链 盗链,顾名思义就是盗窃链接,就是在他人未经允许的情况下,去使用他人站点的任何图片,视频,内容等资源,来借此提升已用的站点的活跃度,严重损坏了别人的利益.那么防盗链就是采用一些办法阻止自己 ...

  7. php+ajax实现拖动滚动条分批加载请求加载数据

    HTML: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  8. 复习python的多态,类的内部权限调用 整理

    #多态的用法 class Dii: passclass Aii(Dii): def run(self): print('一号函数已调用')class Bii(Dii): def run(Dii): p ...

  9. 用python为喜欢的人写一个程序,每天发送贴心的消息

    消息内容 包括如下: 日期(阳历+阴历): 每日壹句(内容来自爱词霸[1]): 天气预报(内容来自中国天气网[2]): 天气情况: 温度情况: 穿衣指数: 减肥指数: 空气指数: 紫外线指数: 消息效 ...

  10. python超实用的30 个简短的代码片段(二)

    Python是目前最流行的语言之一,它在数据科学.机器学习.web开发.脚本编写.自动化方面被许多人广泛使用. 它的简单和易用性造就了它如此流行的原因. 如果你正在阅读本文,那么你或多或少已经使用过P ...