什么是网络协议
协议可以看作是沟通桥梁,形象如语言,通过语言可以知道对方表达的意思。人与机器也通过语言沟通,这种语言就是一种协议。
机器与机器通过网络协议沟通协作,共同达成目的。
常见网络协议
HTTP、TCP、IP、MAC等
网络分层
自上而下分为应用层、传输层、网络层、链路层、物理层。
你一定听过 HTTP是应用层协议、TCP是传输层协议、IP是网络层协议等。那么网络为什么要分层呢?
因为复杂,复杂的程序都要分层,这是程序设计的要求。保证将复杂工作拆分,每层专注于做本层事情。例如二层设备摘下MAC头。三层设备摘下MAC头还有IP头。
网络包
机器与机器之间传输的是网络包,它是网络协议的产物,将要表达内容按照协议规则组织数据。
一个网络包可能包含各层不同协议的数据,它反映了层与层之间的关系:可以有下层没上层,绝对不可能有上层没下层。例如TCP在三次握手时,每发送一个消息都要带上IP和MAC层。
常见网络包:
- 应用层:HTTP(URL、请求方式、正文内容)
- 传输层:TCP(应用监听的端口,以此判断此包发给谁的)
- 网络层:IP(双方IP地址)
- 链路层:MAC(客户端和网关的MAC地址)
网络世界
到这里我们知道了机器之间交流建立在网络协议上,交流的内容是网络包,那么你能想象国内的一台机器传输一个网络包到国外的某台机器上,需要经过怎样的艰难险阻吗?
就像我们发货一样,货从海关出去,我不知道到达目的地的详细路线,但海关一定知道,我只需要知道怎么到海关即可,海关怎样走哪里发出去我不关心。
主机发送网络包也一样发到网关,只要目标IP地址不是同一网段的包(不同局域网),都会发送到网关,由网关决定发到哪里。同一局域网内通过MAC通信;网关之间可以看作是局域网,通过MAC通信。
网关常常是一个路由器,根据路由表决策。