局域网和广域网
先说局域网
一般组建局域网都会使用一些转发设备---->交换机/路由器
交换机
路由器
上面讨论的交换机和路由器的区别是局限于传统意义上的
实际上,真实的交换机和路由器之间的界限已经越来越模糊了,路由器的很多功能交换机也有,交换机的很多功能路由器也有
下面总结下局域网和广域网
通过交换机/路由器组建起来的这些都叫做局域网
广域网其实和局域网没有明确界限,认为比较大的局域网叫做广域网
世界最大的广域网---->Internet(因特网)
IP地址和端口号
IP地址: 描述了网络上的一个主机的位置(相当于收货地址)
端口号:描述了一个主机上的某个应用程序(相当于收件人电话)
协议和协议分层
协议
协议很重要,进行有效的通信的前提就是能够明确通信协议
协议的本质--->约定(发出来的数据是什么样的格式,接收方按照对应的格式进行解析)
协议分层
为什么要协议分层呢?------>网络通信的过程很复杂,如果只通过一个协议来约定所有的细节,这个协议就会非常庞大,因此我们需要把一个大的复杂的协议拆成多个小的简单的协议,每个协议负责一部分工作,因此就有了协议分层
协议分层的好处:
1.每层协议不需要理解其他层协议的细节(更好的做到了封装)
举个例子就是--->打电话的人不需要理解电话的工作原理,就能完成打电话的操作
2.把对应层的协议替换成其他协议(更好地做到解耦合)
举个例子就是--->打电话的人可以不使用有线电话,可以使用无线电话;打电话的人也可以使用英文,不使用汉语
协议具体分为哪几层呢?
学校的课程中我们学的是OSI七层网络模型
但真实情况是OSI的简化版本---->TCP/IP五层(四层)网络模型
下面具体说下TCP/IP网络模型的每一层吧~
物理层:网络通信的硬件设备
像网线/网卡... 这些针对硬件设备的约定,就是物理层协议所负责的范畴,需要保证所有的主机和网络设备之间都是相互匹配的
数据链路层: 负责完成相邻的两个设备之间的通信(局部)
比如像下面的路由器和主机1是相邻的,路由器和主机2是相邻的,主机1和主机2不是相邻的
举一个例子:(这个例子涉及了数据链路层和网络层)
网络层:负责点到点的通信(全局)
网络层就负责为任意节点和任意节点之间的通信(不一定是相邻的,更多的是指不相邻的)规划出一条适合的路线(因为实际的网络环境结构很复杂,两点之间的路线不止一条,因此就需要规划出一条合适的路线)
举一个例子:
传输层:负责端到端之间的通信
只关注结果(数据到没到),不关注过程(不关注数据是走哪条路到的)
举一个例子:比如快递,我作为买家只需要填写自己的收件地址啥的,商家只用根据我填的地址把快递发给我,我和商家都只关注结果不关注过程
上面说的几层:从上到下,从细节到宏观
(程序员最需要打交道的层)
应用层: 和应用程序密切相关,传输的数据是干什么用的.不同的应用程序会有不同的用途
说完这五层协议,我们简单看下上面说的主机/交换机/路由器都包含协议的哪几层
网络分层中的一组重要概念----封层和分用
先说封层~
下面看看不同层的协议,是怎么相互配合构成封装的~
举例子:
使用QQ给一个同学发消息.用户A在键盘上输入一个hello,按下发送键
应用层(QQ应用程序):
根据用户输入的内容,把数据构造成一个应用层的协议报文(报文--->遵守协议的一组数据)
QQ代码中就会根据程序员设计的应用层协议来构造出一个应用层的数据报文(其他层的协议都是现成的,但是应用层协议大概率是程序员自己设定的)
应用层协议就调用操作系统提供的API,把应用层的数据交给传输层
传输层(操作系统内核):
根据应用层传过来的数据,基于当前使用的传输层协议,来构造出一个传输层的协议报文
传输层最典型的协议:TCP,UDP
下面我们以TCP为例
接下来我们把传输层的数据报交给网络层
网络层(操作系统内核):
网络层拿到完整的传输层数据报,就会根据当前使用的网络层协议(例如IP),再次进行封装,把TCP数据报构造成IP数据报,然后添加上一个协议报头
接下来网络层协议会把IP数据报交给数据链路层
数据链路层(驱动程序):
数据链路层在刚才的IP数据报的基础上,根据当前使用的数据链路层的协议,构造一个数据链路层的数据报.
典型的数据链路层的协议叫做"以太网",就会构成一个"以太网数据帧"
数据链路层又会把这个数据交给物理层
物理层(硬件设备):
物理层做的工作就是根据以太网数据帧(其实就是一组0 1),把这里的0 1变成高低电平,通过网线传输出去,或者把这里的0 1变成高频/低频的电磁波,通过光纤/无线的方式传播出去
到此,封装就结束了,此时数据就已经离开了当前主机,前往下一个设备(可能是路由器/交换机/其他设备)
那我们下面说下分用
物理层(硬件设备):
然后物理层把这个数据交给了数据链路层
数据链路层(驱动程序):
然后交给网络层
网络层(操作系统内核):
然后交给传输层
传输层(操作系统内核):
然后交给应用层
应用层(QQ应用程序):
到此分用完成
我们上面讲的封装和分用只是起点和终点,但其实中间还有很多交换机和路由器呢~
我们知道传输层的核心协议有两种:TCP和UDP