在极客时间上学习刘超老师的趣谈网络协议这门课,听看的时候嗯。。。觉得自己已经很懂了,理解得也还行。但是当自己整理时会发现有好多小知识点并没有完全理解。。。这篇博客呢就是在听课后再加上谷歌搜索整理得来。权当学习笔记了,顺便巩固记忆,以后忘了还可以再翻翻。(ps: 未完结。。。持续更新ing)
目录
一. 网络请求过程详述
当你在浏览器中输入一个网址并按回车之后到浏览器页面显示的过程中间发生了什么呢?
1.浏览器通过地址簿协议DNS或HTTPDNS(更加精准)查找该网址对应的ip地址。
2.浏览器使用HTTP或HTTPS协议打包请求并通过socket编程交给传输层。
3.传输层的协议有无连接的UDP和面向连接的TCP。那么何为面向连接呢?就是如果请求的传输过程中出现问题不需要浏览器再进行请求打包,传输层会自己默默地重新请求,直到传输过程没问题为止。TCP头包含两个端口,客户端浏览器监听端口和目标服务器监听端口。
4. 传输层将包封装后,浏览器将包交给操作系统的网络层,网络层的协议是ip协议。IP头包含客户端浏览器的IP地址和目标服务器的IP地址。
5. 如果目标IP是非本地IP, 操作系统找网关,网关的默认地址为192.168.1.1。操作系统找网关的协议是ARP协议。广播给局域网内的所有主机。网关收到后返回给操作系统网关的MAC地址。于是操作系统就将IP包交给MAC层。
6. MAC层封装IP包,使其包含客户端电脑MAC和网关的MAC。网卡再通过网关的MAC地址将包发给网关。网关收到包后,会根据自己的知识,判断下一步该怎么走,网关往往是一个路由器,到某个IP地址应该怎么走会有一个路由表来提供的。
7. 找对应IP所在的网关的沟通协议是路由协议,常用的有OSPF和BGP。当他到达最后一个网关,网关会给他目标IP对应MAC地址。通过这个MAC地址就能找到目标服务器。
8. 目标服务器接收到这个MAC包后发现是自己的MAC地址,就取下MAC头发送给操作系统的网络层。发现IP也是自己的,就取下IP头发送给传输层即TCP协议的那层。
9. 在TCP层,对于每个收到的包,都会有一个回复的包说明收到了。这个回复会沿着刚才来的方向走回去。如果发送端的TCP层没有收到这个回复,就会重新发送请求包。
10. 当网络包平安到达TCP层后,TCP头中有目标端口号,知道了这个端口号,操作系统往往通过远程调用的方式来发给目标网站的对应进程,然后对应进程就收到的请求的内容,并根据自己的程序进行处理。当处理完毕,就会回复一个对应的HTTP或HTTPS包,像来的时候一样回复给发送端。
协议三要素:语法,语义,顺序
层 | 用到的协议 |
---|---|
应用层 | DHCP, HTTP, HTTPS, RTMP,P2P, DNS,GTP,RPC |
传输层 | UDP, TCP |
网络层 | ICMP, IP, OSPF, BGP, IPSec, GRE |
链路层 | ARP, VLAN, STP |
物理层 | 网络跳线 |
二. 网络分层
为什么网络要分层?
因为网络包的格式很复杂, 这个程序也很复杂。复杂的程序都要分层,这是程序设计的要求。