网络协议笔记一

1、特点:
网络协议知识点太多,学完记不住。
看上去懂了,但是经不住问。
知识学会了,实际应用依旧不会。
网络协议学习过程:一看觉得懂,一问就打鼓,一用就糊涂。
2、协议三要素:语法、语义、顺序。
编译过程:源文件—>词法分析—>语法分析—>语义分析—>代码生成 —>目标文件

3、在浏览器输入一个网页地址(URL)后,网络协议使用的流程:
(1)首先通过地址簿协议DNS或者HTTPDNS查找到相应的IP地址,即目标地址;
(2)浏览器开始打包它的请求。普通的请求使用HTTP;对于购物(安全)的请求,往往需要进行加密传输,使用HTTPS协议;
注:DNS、HTTP、HTTPS位于应用层
(3)应用层封装后,浏览器将应用层的包交给传输层完成,通过socket编程实现:TCP/UDP;
*TCP 协议里面会有两个端口,一个是浏览器监听的端口,一个是服务器监听的端口。操作系统往往通过端口来判断,它得到的包应该给哪个进程。*
(4)传输层封装完毕后,浏览器会将包交给操作系统(??)的网络层。网络层的协议是IP地址,在 IP 协议里面会有源 IP 地址和目标 IP 地址
(5)操作系统既然知道了目标 IP 地址,就开始想如何根据它找到目标机器(去远方肯定要找网关)。操作系统启动的时候,就会被 DHCP 协议配置 IP 地址,以及默认的网关的 IP 地址 192.168.1.1。操作系统如何将 IP 地址发给网关呢?在本地通信(MAC)靠“吼”,即使用ARP协议将网关的IP解析为MAC地址;
(6)于是操作系统将IP包交给了MAC层。网卡再将包发出去,由于这个包里面是有 MAC 地址的,因而它能够到达网关。网关收到包之后,会根据自己的知识,判断下一步应该怎么走。网关往往是一个路由器,到某个 IP 地址应该怎么走,这个叫作路由表。
当网络包知道了下一步去哪个路由器,还是要使用那个网络内部的 MAC 地址,通过下一个路由器的 MAC 地址,找到下一个路由器,然后再问下一步的路怎么走,一直到走出最后一个路由器。
路由协议,常用的有OSPF和BGP。
(7)最后一个路由器知道这个网络包要去的地方,使用ARP协议可以根据目标IP地址得到一个 MAC 地址。网络包过关后,通过这个 MAC 地址就能找到目标服务器。
(8)目标服务器发现 MAC 地址对上了,取下 MAC 头来,发送给操作系统的网络层。发现 IP 也对上了,就取下 IP 头。IP 头里会写上一层封装的是 TCP 协议,然后将其交给传输层,即TCP 层。
在TCP层里,对于收到的每个包,都会有一个回复的包说明收到了(仅仅是收到包的回复)。
如果过一段时间还是没到,发送端的 TCP 层会重新发送这个包,直到收到到达的回复。
这个重试绝非你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲,就发送了一次下单请求,TCP 层不断自己闷头重试。除非 TCP 这一层出了问题,例如连接断了,才轮到浏览器的应用层重新发送下单请求。
(9)当网络包平安到达 TCP 层之后,TCP 头中有目标端口号,通过这个端口号,可以找到电商网站相应的进程。
(10)之后涉及到RPC进行进程间的处理,这块还不清楚。最后处理完,返回一个HTTPS包。

特别好的评价摘抄:
问题:
当网络包到达一个城关的时候,可以通过路由表得到下一个城关的 IP 地址,直接通过 IP 地址找就可以了,为什么还要通过本地的 MAC 地址呢?
大家的答案:
在公网中通信只能用公网ip,而对于公网ip是按照区域分配的,路由器是可以知道目标ip的大范围的区域,然后从大区域慢慢向小区域传送的。
Mac地址,这是标识机器的一个地址,在出厂时就确定的,但是单mac所在的区域不是固定的,而是会移动的。
局域网内IP地址是动态分配的;IP和设备并不总是对应的,这对通信就产生了问题,MAC地址是硬件提供商写在网卡中的,全球唯一。所以局域网使用MAC地址通信没有问题。
IP是会变的,但mac是不会变的。所以是无法通过mac地址寻找到你所在位置的。
理论上是可以通过一个大查找表知道每一个mac所在的位置,然后通过查表知道你所在的位置然后根据mac做一个转发,但是查找的代价是很高的。因为,MAC地址虽然唯一但是不能表明用户在整个互联网中的位置,除非维护一个超级大MAC地址对应表,那寻址效率肯定爆炸。但是IP地址解决了这个问题,因为IP地址是网络提供商给你的,所以你在哪里整个网络都是知道的。
手机通过数据上网就是一个通过类似mac寻址的一个网络。在移动网络中是允许你移动的,这是由于基站会记录你的位置信息。并且核心网与公网的通信是通过ip来实现的,而在手机和基站间的通信是通过类似mac的一个唯一码实现的。并且移动网络整体建设成本比互联网的成本高很多,消费也高很多。

参考:刘超老师的《趣谈网络协议》

你可能感兴趣的:(网络)