URL请求流程和ip addr解读

发起一次URL请求流程

  1. 在浏览器输入URL http://wangjialun.top/
  2. 浏览器通过DNS或者HTTPDNS去查找IP地址
  3. 知道目标地址后,浏览器会将请求打包,普通请求使用HTTP协议或者使用HTTPS加密传输
  4. DNS,HTTP,HTTPS所在的层为应用层,经过应用层封装后,浏览器会通过socket编程将应用层的包交给下一层传输层
  5. 传输层有两种协议,一种无连接的协议UDP,一种面向连接的协议TCP,TCP协议会保证这个包能够到达目的地,如果不能到达会重新发送
  6. TCP协议里面会有两个端口,一个是浏览器监听的端口,一个应用服务器监听的端口,操作系统一般通过端口来判断,得到的包交给哪个进程
  7. 传输层封装完毕后,浏览器会将包交给操作系统的网络层,网络层协议是IP协议,在IP协议中会有源IP地址,即浏览器所在机器IP地址和目标IP地址
  8. 操作系统知道目标IP后会通过CIDR进行判断,是否在局域网内,如果不在局域网内会获取DHCP或者手动配置的网关IP地址,通过ARP协议获取到MAC地址
  9. 操作系统接着将IP包交给下一层MAC层,网卡再将包发出去,因为包里面有MAC地址,所以可以到达网关
  10. 网关收到包以后,会根据路由表判断下一步怎么走,类似一个路由器通过OSPF和BGP路由协议获取到目标IP所在的MAC地址,网络包过关后通过这个MAC地址找到目标服务器
  11. 目标服务器校验MAC地址一致,取下MAC头,发送给操作系统的网络层,发现IP一致后取下IP头,IP头里面写上一层封装的TCP协议,然后交给传输层TCP,TCP对于收到的每个包都有一个回复的包说明收到了(注意这个不是请求的结果),回复沿路返回
  12. 网络包到达TCP层后,TCP头里面有目标端口号,通过这个端口号找到服务器监听这个端口的进程,将网络包发给这个进程应用

ip addr 解读

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
   valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:0c:3b:19 brd ff:ff:ff:ff:ff:ff
inet 172.16.12.178/18 brd 172.16.63.255 scope global dynamic eth0
   valid_lft 301621714sec preferred_lft 301621714sec
  • IP 地址后面有个scope eth0 这张网卡是 global 说明 eth0 这种网卡可以对外,可以接收来自各个地方的包,

    lo 的后面是host,说明这张网卡仅可以本机相互通信

    • lo 全称是loopback,又叫环回接口,通常被分配为127.0.0.1,这个地址用于本机通信,经过内核处理后直接返回,不在任何网络中出现
  • MAC地址

    • IP地址的上一行是 link/ether 00:16:3e:0c:3b:19 brd ff:ff:ff:ff:ff:ff ,这个地址是MAC地址,是网卡的物理地址,用十六进制,6个byte表示,MAC地址是唯一标识,具有一定的通信范围,局限在一个子网里面
  • 网络设备的状态标识<BROADCAST,MULTICAST,UP,LOWER_UP>(net_device flags)

    • UP 表示网卡处于启动状态
    • BROADCAST 表示这个网卡有广播地址,可以发送广播包
    • MULTICAST 表示网卡可以发送多播包
    • LOWER_UP 表示 L1 是启动的,即网线插着
    • MTU 1500 是指最大传输单元MTU为1500,这是以太网的默认值
    • qdisc pfifo_fast 全称 queueing discipline(排队规则), 内核如果需要通过某个网络接口发送数据包,都需要为这个接口配置qdisc(排队规则)把数据包加入队列
      • 最简单的 qdisc 是 pfifo, 不对进入的数据包做任何处理,数据包采用先入先出方式通过队列
      • pfifo_fast 的队列包含 三个波段(band).在每个波段中使用先进先出规则,三个波段的优先级也不同,band 0 的优先级最高 band 2 的最低, 如果band 0 里面也数据包, 系统不会处理band 1 里面的数据包,band 1 和 band 2 之间也一样, 数据包按照服务类型(Type of Service, TOS) 被分配到多个波段(band)里面,TOS 是 IP头里面的一个字段, 代表当前的包是高优先级还是低优先级的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值