基础很重要,今天看君山老师的大秒文章时,涉及到DNS和cdn,两者都是之前有点印象,但是没到一种属于自己的地步,就是别人问你一个问题,你还会回答得模棱两可,别人也知道你可能懂这个,但是你讲不出来,我在网上google到阮一峰的博客,看了他的两篇网络协议入门,我做出自己的学习总结,总结基础就是为以后做铺垫。
自己买了两本书,两本网络协议的龙书,tcp/ip协议入门和详解,一本讲tcp/ip协议组成,一本是怎么用tcp/ip协议,完全没看懂,没有一个项目催你,完全啃不下来。
网上给网络分层为7层,5层,都有,我就记为5层,从低到高,从接近物理层的到接近用户的,分为物理层(physical )、链路层(link)、网络层(internet)、传输层(transfer)、应用层(application)。
应用层:
传输层:
网络层:
链路层:
物理层:
我画出这个模型,其实是为了让你来填写各个部分是什么,又是用来做什么的。
1.物理层
用户想要在家里上网,首先有一台电脑,去电信公司办一个宽带,或者手机发个wifi,那么物理层就是这些提供你连接网络的物理元器件网络(系统),现在有光纤...也就是传输0和1,这里的0/1就是数据的底层表示形式啦。
2.链路层
有了这些元器件网络,你想要上网还要一个网卡,物理层传输0/1,那么0/1的组合搭配就需要在链路层,你发出一个信息给honny,honny的电脑怎么就收到了呢?通过mac地址分辨,你的电脑会把mac结构体发到子网络下,同一个子网络下的主机都会接受数据包,在解析了接收方mac地址与自己的相同之后,才会接受这个数据包,其他主机放弃包,一个电脑用一个mac地址代表,你访问上网的时候会上传mac信息,mac head+mac body。
3.网络层
现在你知道了传输需要物理的实体,需要一个mac地址(网卡- - -笔记本上的无线网卡),那么怎么判定A、B两台电脑是在同一个子网络呢?当然也是有办法的,答案是IP地址。ip地址是32位2进制数字,还有子网掩码也是32位2进制,只是子网掩码是255.255.255.0,ip地址和子网掩码执行与操作,如果两台电脑的这个操作相同,那么说明他们处于同一个子网络 不同的子网络互通只能通过网关,。比如你访问googleip地址是197.97.27.12(打比方,具体怎么知道,通过dig linux指令)与子网掩码执行and操作后,你的ip地址也和子网掩码执行and操作,发现结果不一样,那么你们不再同一个子网络。那么怎么办?自己搭建一个与google同子网络的服务器,很简单。
到目前位置发送的数据包为 mac头+ip 头 ipbody,mac body放ip头和ip body。
4.传输层
应用程序之间传输就要知道另一个应用的主机mac地址,ip地址,端口,linux系统里把主机和端口称为socket,知道了主机和端口就可以开发网络程序,udp协议和tcp协议,两者udp协议相对不安全,而tcp协议更复杂,更受广泛使用,每次数据包都要确认,如果丢失就重新发,那么tcp数据体就填充了ip body了,到这里,就算是结束了。
5.应用层
数据在网络上传输都是不同的协议,解析封装数据包,重复,,应用程序协议构成了应用层,如email、ftp。