一个网络请求的生命周期(一)

总感觉学了好多知识,有很多知识还是反复反复的学习,当面试被问到的时候却总是回答不出来,这是因为对自己的知识体系没有一个系统的认知,死记硬背很容易一下子就忘了。

很想做到一次就记住了,所以要体系的梳理一下,曾经有想利用右脑来记忆

画成漫画编程故事来记忆,但是惭愧的很,小弟既不会画漫画也不会写故事,只能先用文字的方法按图索骥的一点点的延申扩展出去。

--------------------------------------------以上废话结束

当我们通过浏览器发出请求访问一个网站的时候到底经历了什么?

比如我们在浏览器输入了一个www.baidu.com然后回车

他首先会找本地的host看是否有对域名的映射解析,比如我们自己启动的springboot项目在不改变端口的情况下输入http://localhost:8080他就会找本地的host文件把localhost转换成本地ip,127.0.0.1,为什么本地的ip都是127.0.0.1而不是0.0.0.1,

这个应是和每一段的范围0——127,刚好是一个字节,换成二进制刚好是

01111111.00000000.00000000.00000001

在这里刚好复习一下计算机的单位

最小单位为位元,bit 就是位每个位只能有0和1

然后是字节byte,1字节=8位

不同编码有不同的大小,GBK一个汉字是2个字节,UTF-8一个汉字是3个字节或者4个字节

接着是kb,1kb=1024字节 在256和341个汉字之间,1MB网络的下行速度为128KB/秒

接着是MB,1MB=1024KB 以最大的256为基础262144就是1m至少能有26万字,一个1M的图片在1M的宽度中1024/128=8至少要8秒才能加载出来

接着是GB 1GB=1024MB

然后是 TB 1TB=1024GB  现在已经有TB硬盘和内存

刚好4段称为ipv4,所以ipv4的最大支持ip数应该是

256*256*256*256=2的32次方=4294967296 大约是42亿9千4百万左右

这些ip要给全球60亿人使用而且很多都是一人多台电脑手机这些的,因为有了ju

2019年11月26日,全球所有43亿个IPv4地址已分配完毕,这意味着没有更多的IPv4地址可以分配给ISP和其他大型网络基础设施提供商,所以后面2011年就出现了ipv6

winds 查看ip的命令 ipconfig

Linux 为ifconfig

 一般公司会同用一个局域网都是统一网段的ip,

网关还有,子网掩码这些都能通过ip跳表的形式找到下个ip,

当我们ping www.baidu.com 的时候可以得到百度的DNS,ip,

 ping了两次发现两次的ip不同,这是因为dns解析已经做了一次分流

 可以看到外网ip和内网ip是不同的,因为内网ip的存在有增加了网络的数量,延申思考,会不会有两个公司的内网ip地址是相同的?这两个ip如果要通信该如果通信?

把刚才ping出来的百度ip地址放入查询可以查出位置处于杭州比较近的南京,如果你们是别的地方可以看下ping的地址是多少这个cdn一定是最近的,怎么找到最近的cdn这个策略如何实现?

上面说了这么多网络知识还没到,本地ip是怎么和百度的这个ip建立连接的。

在这之前得先说一下网络的分层,有两种一种是5层模型,一种是7层模型,因为7层网络模型一直没怎么应用起来,所以我们用5层为例子,7层只作为了解。

深入浅出搞懂网络的五层协议_Chris Kang的博客-CSDN博客_五层协议

网络的五层协议只有看上面的这篇文章就可以看懂,但是看懂和属于自己之间还是有很大的差距的

一定要自己复述出来的才是自己的。

五层网络模型一共分为物理层,链路层,网络层,传输层和应用层

1.物理层就是光纤,电缆,双绞线,无线电波等,主要是用来传输0和1的电信号

2.链路层是对物理层传的0,1电信号进行封装,因为一串连续的0和1是没有意义的,不方便我们解析里面要发送的内容所以就必须要进行分组将数据分成一段一段的,刚开始每个公司都有自己的分组方法,但是这样就不好和别的公司进行通信所以出现了一个“以太网”的协议,协议就是大家都有统一遵守的规范,这个其实就是网卡,他把数据分成一段一段的叫做帧,一帧包含Head头和数据Data

其中Head中包含着数据的类型,要发送给谁,谁发送的等等

这里已经和soket套接字,套接字就是根据主机(ip)+ 端口发送的沾包拆包有点像了,其实netty就是对soket的封装,里面多了缓冲区buffer,管道等概念

 每一个网卡都有一个独一无二的mac的地址,mac地址是个48二进制,12位16进制,前6位是厂商号,后6位为流水号

 可以通过arp广播知道同一局域的网内的mac地址

3.网络层加入了ip

版本,长度,IP 

4.传输层TCP,UDP

 5.应用层,对TCP/IP的封装http协议sftp就是应用层

 

 

 TCP,的三次握手主要是客户端seq随机数x,然后服务端回答ack=x+1,并发送seq=y;

接着客户端响应ack=y+1;

四次挥手就是:客户端说自己结束了,发送随机数seq=x,然后服务端回应我知道了ack=x+1;

接着处理,处理完了再发送随机数seq=y在加上FIN=1告诉我已经处理响应完了,客户端收到

之后就回复ack=y+1,服务端收到回复之后就关闭了

-------------------------------

netstat -natp 查看进程连接,ip+端口就是一个soket

 route -n 可以查看本机的路由表

这三列分别是目标,网关,掩码

一个ip和掩码进行按位与计算得到的和目标ip相同,然后网关是0.0.0.0就可以找到自己的网段然后根据arp协议就行广告,中间会传递一个目标的mac地址,根据对比mac地址是否相同,相同就会接收,不同就会丢弃掉。

比如说本地的内网ip是172.6.14.116外网ip是115.236.50.27想要访问www.baidu.com根据dns解析我要先把数据包发送到180.101.49.11,这是怎么发送的呢?

会根据dns之后获取到了目标ip180.101.49.11,然后根据路由表进行按位与运算,找到网关192.168.150.2这台机器,这台机器一般就是一个路由器,然后根据路由器的路由表跳到180.101.49.0 这个为180.101.49段的网关,然后根据180.101.49.0的路由表和掩码运算找到默认网关0.0.0.0发现跳到了自己同一段局域网,然后根据局域网的arp广播找到自己的地址

172.6.14.116到192.168.150.2会传递172.6.14.116的mac地址,

192.168.150.2到180.101.49.0 会传递192.168.150.2的mac地址

arp会解析ip地址和mac地址的映射 ,arp是同一局域网内的

S-NAT改变源目标地址

 D-NAT模式改变目标地址

 

 DR模式,需要修改arp,使得arp对外隐藏对内可见,lvs必须和处理服务器必须在同一局域网中

DNS解析过程

什么是tcp?tcp如何保证数据传输可靠性的?看下面的文章

TCP 协议简介 - 阮一峰的网络日志

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值