计算机网络到现在零零散散也算过了三遍,一些协议大概了解,但总是模模糊糊的印象,现在把自己的整体认识总结一下,(本来想去起名叫《看这一篇就够了》,但是发现网上好的文章太多了,还是看这篇吧),作为非通信或对网络有特殊要求的专业,理解到这应该也基本足够了。
整体结构
目前主流的分类模型是五层体系结构,分别为
1,应用层,负责主机内报文对应应用的分发,如邮件SMTP,文件共享服务FTP和浏览器的超文本传输协议HTTP;
2,网络层,负责网络内路由器到主机应用的报文寻址,通过端口实现,可靠交付TCP和无连接的UDP;
3,传输层,负责网络内报文在路由间的寻址跳转,实现协议有IP、RIP、OSPF等;
4,数据链路层,正式传输前的最后一次封装,用于对接网卡等设备,与IP地址的映射转换通过ARP实现;
5,物理层,光纤或网线中实实在在的光电信号传输。
整个网络运行图如下:
但从这个角度看会有割裂,报文传到互联网后数据链路层又对其进行封装,难道报文在网络上的传输是通过MAC地址实现的吗?
是,也不是,再结合设备层面的层级图就更加清晰了:
A到B的报文其实要经过多个路由器转发,而这些设备间的直接寻址是通过数据链路层实现,即网卡对网卡的通信,中间需要很多路由设备帮我们不断进行寻址和转发,最终才能实现通信,只是这一步对用户大多是透明的。
详细说明
从上一张整体结构图从上往下解释:
ARP-地址解析协议:实现IP地址和MAC地址的转换,通过在网络中广播报文,发送ARP请求,相当于大喊一声,我要找的IP在哪里,对应IP位置的主机就把自己的MAC地址发给他,以后发报就用该地址即可,详细介绍可见文章,以及MAC地址相关文章。
IP协议:我们常说的192.168.1.1
就是一个IP地址,该地址帮我们标记网络中的主机,从而解决网络寻址的问题。具体分为网络号和主机号,IP地址后跟着\24
就是划分网络的掩码长度,代表前24位为网络号,这24位指的是二进制下的IP地址,255.255.255.255
共32位,更详细的说法可见该文章。
NAT地址转换:IP地址二进制共32位,一共只有2的32次方个地址,大概43亿,平均一个人还分不上一个,现在全世界的手机、电脑、平板、甚至智能家电等远远不止43亿个,为什么还能继续通信呢?这就是用到了地址转换。
RFC1918将10.0.0.0-10.255.255.255
;172.16.0.0-172.31.255.255
;192.168.0.0-192.168.255.255
这三个范围的地址设置位私有地址,仅能在内部使用不对外分配,逻辑上构成一个局域网,我们在cmd
中使用ipcofig
查到的IP也就是这些范围内的私有地址,局域网内的用户可以直接通信,NAT通过端口号映射私有地址实现公私网地址的转换,但该过程只能由私有地址发起,目标为公网地址,所以局域网外的私有地址用户无法通信,需要借助公网IP跳转。详细内容可见该文章。
TCP/UDP:该方式通过IP、端口号确定主机上的特定应用进行通信,其中0-1023
端口为知名服务端口,如FTP、HTTP等不可随便更改,1024-65535
可由用户指定,详细内容可见该文章。
TCP传输控制协议是有连接的,发送后需要主机确认,否则需要重传,确保数据报一定到达且有序,但因为上述原因效率较低;
UDP用户数据报协议是无连接的,用最少的协议机制向目的端口发送信息,发送后什么也不管,可能丢包,一般用于视频和游戏等要求延迟的应用。
HTTP:应用级别的协议就只介绍这一个,超文本传输协议,属于TCP/IP协议族。它的主要作用是允许客户端(如浏览器)通过网络向服务器请求资源,服务器再将资源返回给客户端。浏览器通过URL发起访问请求,比如我们网址中的域名本质就是IP地址(该过程需要了解DNS域名解析服务,这里不作赘述。),后面跟的参数是访问资源在目标主机中的位置和参数等信息,服务器收到请求后进行响应,把对应资源发送给客户端,此外还有安全的超文本传输协议https
,详细介绍可见该文章。
总结
本文章大致介绍了计算机网络的整体结构,以及部分实现方法的原理,前期学习作为简单了解暂时够了,以后有需求可以再顺着方向继续研究。
笔者认为计算机网络作为计算机四大原理之一基本算是最简单的了,这门学科让我不得不转换思路看待世界上的一些超前建设,因为计算机网络建立之初就已经算是做了充分准备,但网络世界发展到如今规模还是没预料到的,前瞻性的确很重要,但人又很难跳出时代的局限性,底子没打好想在基础上重构或者整个推翻重来都是很难的,IP v6推到现在也没完全普及,而IP v4早就说要用完了也没见谁现在连不上网,能上路就是好的,别管什么优雅了。
最后贴一个华为总结的各层报文大全,以后抓包可以对比着看,华为IP报文格式大全。