网络原理基本概念

一.IP地址和端口号

        IP地址指的是一台主机在互联网中所处的位置,相当于我们网购时填写的收货地址。IP地址是通过32位整数来进行表示的,为了方便查看,就使用了点分十进制的方式来进行表示IP地址。用户可以在电脑中使用cmd来看自己本台机器的IP地址,这里给个例图:

        端口号指区分当前主机上的应用程序(进程)。因在一台主机上会使用到许多网络程序,不同的网络程序有不同的端口号,这样可以区分当前主机收到的数据,是需要给那个网络程序处理使用。端口号同样是一个两个字节的整数(0~65535),但是实际上0~1023这些端口都会存在一些特殊的含义,程序员自己写代码的时候,使用这些端口号,一般都是使用剩下的。

二.协议

        协议指的是,⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵从的⼀组定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。 其作用类似于人们在沟通时的暗号,通过暗号来进行一些特殊对话,而计算机也是类似于暗号来进行交互的。计算机进行网络通信是通过光信号/电信号/电磁波等介质作为网络传输数据的载体,传输的数据是通过01这样的二进制来约定是什么意思,从而实现“暗号”也就是网络通信协议。

三.协议分层

1.概念:

        若只使用一个网络协议来约定所有的网络通信细节,会导致网络协议太大,过于复杂,不利于使用。故把一个大的协议分成小的协议,每一个小的协议只负责一个问题,再让这些小协议互相配合,这些小协议就构成了大的协议。故把功能定位类似的小协议,放到一层中,并且约定好层与层之间的交互关系就构成了协议分层。并且约定,层与层之间的协议不能随意交互,只有邻层之间可以进行交互。上层协议,可以调用下层协议,下层协议又可以给上层协议提供服务。

2.协议分成带来的好处:

        (i).降低了使用成本,使用某个协议的时候不需要关注其他协议的实现细节。(当使用无线电打电话的时候,双方的人只需要关心语言层的协议,而不需要通信层何进行的协议。)(ii).降低整个体系的耦合度,灵活的变更某个层次的协议。

3.网络模型:

        OSI七层网络模型,这种划分方式只存在于教科书中,并未被真正的采用,只需认识即可。在现实生活中大部分使用的是TCP/IP五层网络应用模型。TCP/IP五层网络应用模型图:

物理层:描述硬件设备(网线等设备)需要满足怎样的条件。

数据链路层、网络层和传输层三者之间有很大的联系,并且相互配合完成数据转发的过程。

传输层:主要关注的是网络通信的终点和起点,并不关心通信的中间细节。

网络层:进行网络通信的路径规划,还需要负责地址管理。

数据链路层:针对上述规划好的路径,进行具体的实施,也包括其中实施过程的细节。

应用层:程序要拿到数据去做什么事情。

传输层到物理层是程序员无法干预的,它是操作系统和硬件设备已经实现好了的。只有应用层才能被程序员干预到。

4.网络设备所在分层:

四.封装和分用

(1)通过QQ发送方来解释封装的概念:

(i)应用层封装:

        假设一个用户此时在QQ上发送hello给另一个用户,点击发送之后,QQ的程序会把hello这个内容从输入框读取到,并构造成一个“应用层数据包”(这个数据包的构造,在应用层的网络协议中有描述到,此处的协议,往往是开发QQ应用程序的程序员自定义的。这里自行假定一个定义一个应用层数据包结构。)数据包格式:发送者的QQ号;接受者的QQ号;发送时间;消息的正文\n。数据包样例:123456;654321;2024-8-29  16:02:00;hello\n。于是QQ这样的应用程序就会调用系统提供的API(传输层给应用层提供的API)操作系统会提供一个类似于“发送数据”的API,然后应用程序将上述的组织好的应用层数据包作为参数传进来。于是应用层数据包就到了系统内核里,也就进入到传输层的代码部分。

(ii)传输层封装:

        此时,传输层会将上述的应用层数据,再进一步封装成一个传输层数据包(计算机网络中的封装简单地说是字符串的拼接)由于传输层有多种协议(主要的两个协议 :TCP / UDP)假设此处使用的是UDP协议,那么如下图所示

UDP的报头中包含关于UDP的一些信息,例如发送者的端口号和接受者的端口号。拼上的这些信息,都是给后续的转发做准备。传输层构造好数据之后,就会继续调用网络层,提供给传输层的API,然后再把数据交给网络层处理。

(iii)网络层封装:

        网络层也存在许多协议,其中最主要的是IPv4协议,简称IP协议。IP协议拿到上述传输层的数据包,构造成网络层数据包,如图所示:

        

IP报头中存在很多信息,主要的信息是发送发的IP地址和接收方的IP地址。网络层再调用数据链路层的API,之后再把数据交给数据链路层处理。

(iv)数据链路层封装:

        数据链路层常见的协议:以太网(平时插电脑的网线,进行上网的方式),在IP数据包的基础上再进一步进行包装,如图所示:

(v)物理层封装:

        网卡对上述的二进制数据,进行真正的传输操作,就需要把上述的01010101这样的序列转换成光信号/电信号/电磁波......

(2)通过QQ接收方解释分用的概念:

(i)物理层分用:

        接收方物理层收到光信号,把这样的光信号还原成010101这样的二进制字符串,再把数据交给数据链路层。

(ii)数据链路层分用:

        以太网拿到数据包,对其进行解析。拿出其中的报头和载荷,根据报头的信息做出一定的处理,也会根据报头的信息来决定这个数据包是丢弃还是转发还是自己保留(向上解析)。此时数据包如图所示:

(iii)网络层分用:

        网络层拿到数据链路层的数据之后,IP协议也会对这个数据包进行解析,并取出报头和载荷,此时也需要根据报头的信息来对数据进行丢弃或是转发或是保留。如图所示:

(iv)传输层分用:

        传输层这边的UDP协议会对数据进行解析,取出UDP报头和载荷,此处需要把载荷的内容进一步交给应用层协议(应用程序),依赖UDP的端口号来进行传给应用程序。

(v)应用层分用:

        QQ程序会对上述的数据进行反序列化操作,针对上述数据进行进一步的处理:(1·)把收到的消息显示在界面上(2·)有滴滴滴的声音...

(3)两台主机之间的网络通信流程

        两台主机之间不是简单的一根网线来连接。而是通过很多交换机和路由器完成数据转发的过程,并且中间的交换机和路由器都会涉及到封装和分用。交换机:封装分用到数据链路层,就可以决定丢弃数据,还是继续转发。而不再继续分用了。路由器:封装分用到网络层,就可以决定数据是丢弃还是继续转发,也不再继续分用了。(路由器是三层转发,交换机是二层转发)如图所示:

五.客户端、服务器、请求、响应概念

客户端:网络通信中,主动发起通信的一方。

服务器:网络通信中,被动接受的一方。

请求:客户端主动给服务器发起的数据。

响应:服务器给客户端返回的数据。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值