编译过程 源文件 -> 词法分析 -> 语法分析 -> 语义分析 -> 代码生成 -> 源文件
应用层协议:DNS HTTP HTTPS
传输层协议:UDP TCP
UDP:无连接的协议
TCP:面向连接的协议(会确保这个包能够到达目的地,如果不能到达,会重新发送,直至到达)(有两个端口,一个浏览器监听的端口,一个是服务器监听的端口。操作系统往往通过端口来判断,它得到的包应该进哪个进程)
一个网站的请求过程
1.输入url 浏览器会打开地址簿协议DNS去查找 还可以使用另外一种更加精准的地址簿HTTPDNS去查找 获取到IP地址 ,获取到目标地址之后 ,浏览器开始打包请求,经过应用层的封装 等到下面的包
2.浏览器打包好请求之后 会将应用层的包交给下一层(传输层),通过socket来实现。
3.传输层封装完毕后,浏览器会将包交给操作系统的网络层。网络层的协议是IP协议。在IP协议力会有源IP地址,即浏览器所在机器的IP地址和目标IP地址。
4.操作系统知道包要离开本地去远方,把包交给网关.而操作系统启动的时候,就会被DHCP协议配置IP地址,以及默认的网关的IP地址 192.168.1.1。
操作系统利用ARP协议大吼一声,网关就会回复操作系统一个MAC地址。
于是操作系统将IP包交给了下一层MAC层。网卡再将包发出去。里面包含了网关的MAC地址,从而到达网关。
5.网关收到包之后,根据自己的知识判断下一步怎么走。网关通常是一个路由器,到某个IP地址后怎么走,这个叫路由表
6.每到达一个网关,就要拿出IP头来,里面写着源IP地址,想经过目标IP地址。
网关之间经常使用路由协议去沟通,常用的有OSPF和BGP.
网关与网关之间是一个局域网,当网络包知道了下一步要去哪个网关,还是要使用局域网内部的MAC地址,通过下一个网关的MAC地址,然后再问下一步怎么走,一直到走出最后的网关。
7.最后一个网关之后包要去的地方,对着局域网内部发送通知,寻找目标IP地址,目标服务器就会回复一个MAC地址。网络包过关后,通过MAC地址就能找到目标服务器。
8.目标服务器发现MAC地址对上,就取下MAC头部,发送给操作系统的网络层。IP地址也对上了就取下IP头。IP头里会写上上一层封装的是TCP协议,就会将其交给传输层,即TCP层。
9.在这一层里,对于收到的每个包,都会有一个回复的包说明收到了。沿路返回。给发送包的源头报平安。
10.当网络包到达TCP层之后,TCP头中有目标端口号,通过这个端口号,可找到网站的进程正在监听这个端口号,假设一个tomcat,将这个包发给网站。
11.网站的进程得到HTTP请求的内容,之后要做什么。往往一个网站最初的接待请求的这个tomcat知识一个接待员,负责统筹处理这个请求。这个接待员通过RPC调用,来告诉相关的进程要干什么,接待员不用关心中间的网络互连问题,会由RPC框架统一处理。RPC框架有很多中,有基于HTTP协议的报文里面的,有直接封装在TCP报文里面的。
12.当接待员发现相应的部门都处理完了之后,就回复一个HTTP(HTTPS)的包,告知任务完成。这个包会像来的时候一样,经历多个网关,回到你的私人电脑,最终进入浏览器,现实任务完成。