目录
局域网:Local Area Network,local即标识了局域网是本地,局部组建的一种私有网路。就好像我们打游戏,不仅仅可以是单机游戏,也可以支持局域网对战。
局域网组建网络的方式:
1、基于网线直连
2、基于集线器组建
3、基于交换机组建
4、基于交换机和路由器组建
广域网:Wide Area Network,通过路由器将多个局域网连接起来,就形成了广域网。广域网其实就是一个很大的局域网。
网络互联的目的是进行网络通信,也就是网络数据传输。更具体一点就是网络主机中不同进程间,基于网络传输数据。
IP地址:
客户端和服务器之间就是通过网络进行数据传输,客户端是如何找得到服务器在哪?这时就要通过IP地址找到服务器。
IP地址就是标识一个主机在网络上的位置信息,在计算机中,使用一个32位的整数来表示这个IP地址,由于32位整数比较大,看起来不太方便,就引入了另外一种表达方式:点分十进制。使用三个. 把这个32位的整数分为四个部分,每个部分都是一个一个字节的整数,每个部分的取值范围就是0-255。例如回环IP地址表示:127.0.0.1
端口号:
用来区分一个主机上的应用程序的,我们通过IP地址可以知道主机的具体位置,但是这个主机上还有很多程序,当主机收到一个具体的数据的时候,要把这个数据交给哪个程序来处理,这时候就需要通过端口号来区分。让每个进程分别绑定到不同的端口号,此时收到的网络数据报中也会包含一个"目的端口"字段,就会根据目的端口找到对应端口号的进程,从而把数据交给对应的进程。这些都是通过操作系统内核完成的。
端口号是一个整数,用来区分进程;PID也是一个整数,为什么不用PID呢?
端口号是固定不变的,对于端口号我们可以手动指定,但是对于PID而言,每次进程启动之后,PID都在发生改变,我们不能控制,所以不能使用PID。
通常情况下,两个进程无法绑定到同一个端口号!
但是一个进程可以绑定多个端口:
我们可以将socket和端口绑定,socket就是文件,一个进程里面可以有很多文件,也就可以有很多个socket,每个socket都可以绑定到不同的端口。
端口号是一个整数,是一个两个字节的整数,范围是0-65535(没有负数),其中0-1023这些端口称为"知名端口号"。当前已经有很多现成的应用层协议,就给这些现成的应用层协议已经分配了一些端口了,在自定义协议的时候,尽量避免知名端口号,因为这些往往需要管理员权限。
客户端和服务器:
客户端:主动发送请求的一方
服务器:被动接受请求的一方
就好像我们去饭店吃饭,这时候我们就相当于客户端,饭店相当于服务器,我们把要吃什么(请求)告诉饭店,饭店就会给我们相应的饭菜(响应)。由于服务器无法确定啥时候有客户端来,服务器能做的事情就是"随时待命"。
客户端给服务器发送的数据--请求(Request)
服务器给客户端返回的数据--响应(Response)
客户端和服务器的交互方式,有很多种:
1、一问一答:客户端发送一个请求,服务求给一个响应
2、一问多答:客户端发送一个请求,服务求给多个响应
3、多问一答:客户端发送多个请求,服务求给一个响应
4、多问多答:客户端发送多个请求,服务求给多个响应
协议:
协议就是一种约定,协议本身概念并不复杂,但是由于网络通信之间,涉及到很多方面的细节,所以真实的网络通信协议往往也比较复杂。
网络通信的五元组:
两台主机之间的通信,往往是通过一个五元组来描述的。
源IP:标识源主机
源端口:标识源主机中该次通信发送数据的进程
目的IP:标识目的主机
目的端口:标识目的主机中该次通信接收数据的进程
协议类型:标识发送进程和接收进程双方约定的数据格式
协议分层:
当前网络中涉及到的协议是有很多的,因为网络里面比较复杂,无法只通过一个协议就能把所有的功能都涵盖进去,于是就拆分出多个协议,为了能更好的组织这么多协议,就按照这些协议的定位,在进行分类,于是就有了"协议分层"。这就相当于我们写代码,如果问题比较复杂,只通过一个类来完成所有功能,这可能就比较复杂,这时候我们就可以拆分成多个类来实现这些功能,如果类太多了还能创建包,把这些类按照功能定位放进包里。
分层的好处:
1、达到了封装的效果,把实现细节隐藏起来,降低人们使用成本(人们使用的时候不需要了解具体工作原理)
2、可以方便对其中某层/某些协议进行灵活的替换(如果需要对某层协议的细节进行修改,只需要改那层就可以,不需要动其他层协议)
OSI七层网络模型:
7、应用层
6、表示层
5、会话层
4、传输层
3、网络层
2、数据链路层
1、物理层
由于OSI七层模型既复杂又不实用,所以OSI七层模型没有落地、实现。我们在实现组件网络时,只会用到OSI七层模型设计中的部分分层,也就是TCP/IP五层(或四层)模型来实现。
TCP/IP五层(或四层)模型:
因为物理层更偏向于硬件的东西,所以往往会忽略物理层,所以这里也叫TCP/IP四层模型。
应用层:具体的应用程序
传输层:只关注起点和终点,不关注具体的通信细节
网络层:针对网络上任意两台主机,完成一个通信路径的规划,以及具体传输
数据链路层:实现两个相邻设备之间的数据通信
物理层:硬件设备,网络通信的基础设施(比如说网线)
以上可以说明下层协议给上层协议提供一些功能支撑,上层协议要依赖下层协议。
这就好比我们在某宝(应用层)上买衣服,我就需要填写我的收件人地址和电话,卖家就发货,他也需要填写地址和电话,我和卖家只关注起点和终点,我们就相当于传输层,卖家把货交给快递公司,快递公司需要规划好具体运输路线,快递公司就相当于网络层,专门的快递小哥要进行送货,这个快递小哥就相当于数据链路层,衣服需要在公路或者航道上运输,这些公路、航道等基础设施就是物理层。
TCP/IP中最重要的协议:TCP传输层、IP网络层。
笔试内容:
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也就是TCP/IP五层模型的下四层。
对于一台路由器,它实现了从网络层到物理层,也就是TCP/IP五层模型的下三层。
对于一台交换机,它实现了从数据链路层到物理层,也就是TCP/IP五层模型的下两层。
对于集线器,它只实现了物理层。
但是真实情况会根据路由器、交换机的的好坏而有一些改变,有些好的交换机或者路由器也能实现传输层以及应用层的内容。
举个例子:
很多交换机或者路由器都有类似于这样的功能:舆情分析
就拿我们在QQ上发消息来说,这些消息都是通过路由器交换机来进行转发,路由器交换机就可能去解析这个数据包,提取出用户所发送的信息是什么。
封装和分用:
发送方层层构造数据就是封装;接收方层层解析数据就是分用。
以上就是今天的内容了,有什么问题都可以在评论区留言🍉🍉🍉