目录
一、宏观基础知识
1、网络,局域网、广域网
2、互联网,因特网
3、生活中常见的几种上网方式
二、微观基础知识
1、两台计算机是怎么通信的
2、IP地址
3、MAC地址
三、网络分层
1、网络互联模型
2、网络层
3、数据链路层
4、物理层
网络(一):基础知识
网络(二):传输层TCP、UDP
网络(三):应用层HTTP
网络(四):应用层HTTPS
一、宏观基础知识
1、网络,局域网、广域网
网络(Network):两台计算机连接起来或者无数台计算机连接起来,不管它们是通过什么网络设备连接起来的(有可能是只通过交换机连接起来的,也有可能是通过交换机和路由器连接起来的),只要连接起来,就形成了一个网络。一言以蔽之网络就是计算机、网络设备以及它们之间链路的总和。
网络按覆盖范围分为局域网、广域网和城域网(介于局域网与广域网之间)。
局域网(LAN,Local Area Network):又称内网、私网,是指覆盖范围在方圆几公里之内的网络,通常用于家庭、公司、学校、医院、机关大楼等。
广域网(WAN,Wide Area Network):又称外网、公网,是指覆盖范围在方圆几十公里甚至几千公里之外的网络,通常用于连接多个地区、城市和国家,或横跨几个洲形成国际性的远程网络。
2、互联网,因特网
互联网(internet):两个网络连接起来或者无数个网络连接起来(即两个局域网连接起来 || 无数个局域网连接起来 || 两个广域网连接起来 || 无数个广域网连接起来 || 一个局域网、一个广域网连接起来 || 无数个局域网、无数个广域网连接起来),网络与网络之间连接只能是通过路由器连接(不同网段),就形成了互联网。一言以蔽之互联网就是网络、网络设备以及它们之间链路的总和,因此互联网又称为网络的网络。
互联网有大小,而最大的互联网就是因特网(Internet),是指把全世界所有的网络连接起来,我们日常所说的“断网了”,就是指“你的计算机没有连接到因特网”。
3、生活中常见的几种上网方式
补充:生活中常见的几种接口
- 快速以太网口(FastEthernet)
同一网段内的计算机、网络设备(如交换机)、路由器网关是用快速以太网口和网线连接的,如上图的1、2。
- 串口(Serial)
同一网段内的路由器网关与路由器网关是用串口和网线连接的,如上图的3。
3.1 电话线入户
电脑(会被分配一个私网IP)的快速以太网口,通过网线连接到路由器的局域网快速以太网口(LAN接口,没有IP地址,因为这四个接口本质上是交换机的四个接口),因为现在的路由器内部已经集成了交换机的功能,所以本质上来说电脑其实是连接到了交换机,然后交换机又连接到了路由器,这样如果连接了四台电脑,那么这四台电脑就处于同一网段、同一局域网下。然后我们看到路由器上还有一个广域网(特指因特网)快速以太网口(WAN接口,会被分配一个公网IP),这个快速以太网口又通过网线连接猫的接口,猫上面还有一个接口就是连接我们的电话线,这样就算是连接上了因特网。
那么因特网上的数据就可以沿着电话线传输给猫,猫的主要职责是把电话线的模拟信号转换为数字信号,然后把数据传递给路由器的广域网快速以太网口,路由器再经过跨网段转发给局域网快速以太网口,进而传递给我们的电脑,反之电脑给因特网传输数据同理。
3.2 光纤入户
现在基本上用的都是光纤入户了,和电话线入户的原理一样,只是把电话线改成了光纤,猫改成了光猫,传输速度和稳定性远超电话线入户,然后无线路由器跟有线路由器的主要区别就是传输介质不一样,可以连接更多的设备,其它原理是一样的。
二、微观基础知识
1、两台计算机是怎么通信的
假设客户端想给服务器发送一个HTTP请求:
http://ip地址:端口号/项目/...
-
http://
:首先表明要使用哪种协议来传输数据; -
ip地址
:其次得知道对方计算机的IP地址,以便能够找到对方计算机。但是光知道对方计算机的IP地址还不够,还得知道对方计算机的Mac地址,因为对方计算机真正接收数据的硬件设备是网卡,所以在找到对方计算机后,还得找到对方计算机的网卡,将数据传输给网卡,如果网卡发现数据里的目标Mac地址是自己,就会将数据传输给上一层(如Tomcat)进行处理,否则就会将数据丢弃;(实际开发中,我们发现客户端只需要通过IP地址就能访问服务器,是因为数据在传输过程中会经过交换机、路由器等很多设备,这些设备已经通过IP地址解析出了服务器的Mac地址) -
端口号
:然后就是端口号。一台服务器上有很多个端口,每一个端口里都跑着一个服务器软件Tomcat,每一个Tomcat里又部署着若干个Java项目,端口和Tomcat是一对一的,Tomcat和项目是一对多的,所以如果想访问某个项目,就必须得确定好是哪个Tomcat,也即必须确定好是哪个端口。服务器的网卡在收到发给它的数据后,就会根据端口号将数据投递到相应的端口,也即投递给相应的服务器软件Tomcat; -
路径
:Tomcat收到数据后,就会拿着数据执行具体的Java项目了,执行完后会把客户端需要的数据再逆向传输回去。
2、IP地址
IP地址相关的关键词:IP地址、子网掩码,网段、主机编号、交换机、路由器、网关、动态路由,公网IP、私网IP
2.1 IP地址是什么
IP地址(Internet Protocol Address,互联网协议地址)、子网掩码(Subnet Mask):因特网上连接着无数台计算机,为了能将这些计算机区分开来,每台计算机都会从DHCP服务器获取一个IP地址和一个子网掩码(当然我们也可以手动配置IP地址和子网掩码),这样通过IP地址就能访问到每一台计算机。
IPv4地址占4字节(32位),一共有2^32 ≈ 43亿个,2019年11月26日已分配完毕;所以推出了IPv6地址,IPv6地址占16字节(128位),一共有2^128 ≈ 340亿亿亿亿个,号称比地球上的沙粒还多。(后面的学习中,如不特殊说明,IP地址都是指IPv4地址)
子网掩码不能单独存在,它必须和IP地址一起使用,子网掩码的唯一作用就是将某个IP地址划分成网段和主机编号两部分,它的位数和IP地址位数一样。
例如一台计算机连接上了因特网,它的IP地址被分配为:192.168.1.10,子网掩码被分配为:255.255.255.0。
第1个字节 | 第2个字节 | 第3个字节 | 第4个字节 |
---|---|---|---|
1100 0000 | 1010 1000 | 0000 0001 | 0000 1010 |
192 | 168 | 1 | 10 |
第1个字节 | 第2个字节 | 第3个字节 | 第4个字节 |
---|---|---|---|
1111 1111 | 1111 1111 | 1111 1111 | 0000 0000 |
255 | 255 | 255 | 0 |
2.2 IP地址的组成
IP地址由两部分组成:网段(网络地址)和主机编号(主机地址),网段 = IP地址 & 子网掩码,主机编号 = IP地址除去网段的那部分。例如192.168.1.10 & 255.255.255.0 = 192.168.1.0,其表达的含义为这台计算机位于192.168.1.0网段、主机编号为10。
扩展:
1、关于网段
经过计算,如果两台计算机的网段是一样的,我们就说这两台计算机处于同一网段,否则处于不同网段。
处于同一网段的计算机可以用交叉线、同轴电缆、集线器、网桥、交换机等网络设备连接起来,现在一般都是用交换机连接,它们之间可以通过网络设备直接传输数据;反过来说,交叉线、同轴电缆、集线器、网桥、交换机等网络设备只能连接处于同一网段的计算机。
处于不同网段的计算机之间必须用路由器这个网络设备连接,因为只有路由器才能完成数据的跨网段传输;反过来说,路由器这个网络设备只能连接处于不同网段的计算机。路由器上会有多个网关(即硬件接口),每个网关都有自己的IP地址、子网掩码、MAC地址、网段、主机编号,它们分别连接着不同网段的计算机,它们所处的网段必须跟它们连接的计算机所处的网段一样,不然数据就没法从计算机传到路由器了。路由器上网关所在的网段称为与路由器的直连网段,路由器只能跨它的直连网段传输数据,不能跨非直连网段传输,比如路由器A与路由器B、路由器C相连,路由器A直连网段下的计算机想给路由器B直连网段下的计算机传数据就不行,这时还需要动态路由(动态路由是指路由器能够通过RIP、OSPF等路由器选择协议自动建立自己的路由表,路由表其实就是路由器A连着的其它路由器与其直连网段的映射关系的表)来让路由器A知道是先把数据传输给路由器B还是给路由器C。
一台计算机在给另一台计算机传输数据前,都会先判断一下目标计算机和自己是不是处于同一网段,如果是就可以通过交叉线、同轴电缆、集线器、网桥、交换机等网络设备直接传输,如果不是就得先传输到路由器然后再跨网段传输。
2、关于主机编号
我们可以通过把主机编号借位给网段的方式(具体的操作就是手动配置子网掩码),来将一个网段划分为多个子网段,从而避免IP地址的浪费。比如我们需要让500台计算机处于同一个网段内,但是C类IP地址只能容纳254台计算机,所以我们就得分配B类IP地址给这500台计算机,但是B类IP地址能容纳65534台计算机,于是这个网段内就会有65034个IP地址是空闲浪费掉的,所以可以把一个B类IP地址划分为多个子网段,从而避免IP地址的浪费。
2.3 IP地址的分类
IP地址分为公网IP(Public IP)和私网IP(Private IP)。
公网IP是指使用在广域网(尤其指因特网)上的IP地址,换句话说连接在因特网上的每一台计算机(或其它网络设备)都有一个全世界唯一的公网IP,这些计算机可以通过公网IP随意互相访问,因为因特网上的路由器存储着到达任何一个公网IP的路由表。公网IP由因特网信息中心统一分配和管理。
私网IP是指使用在局域网上的IP地址,换句话说连接在某个局域网上的每一台计算机(或其它网络设备)都有一个当前局域网内唯一、但并非全世界唯一(即不同局域网的私网IP可以重复)的私网IP,这些计算机可以通过私网IP在当前局域网内随意互相访问,但是这些计算机不能超出当前局域网与因特网上的其它计算机随意互相访问,因为因特网上的路由器仅仅存储着到达任何一个公网IP的路由表,而没有存储到达任何一个私网IP的路由表,所以局域网上的计算机要想与因特网上的计算机随意互相访问,就必须得把私网IP转换公网IP,这就需要NAT技术。私网IP可以由用户自己分配和管理。
那为什么要把IP地址分为公网IP和私网IP呢?NAT技术又是什么?
因为IP地址的总数是有限的,如果全世界所有的计算机都直接使用公网IP,那公网IP将很快就会被耗尽。而有了私网IP,一个局域网内的所有计算机都分配私网IP就好了,仅仅用一个公网IP对外连接因特网。这样一个公网IP就可以对应很多私网IP,从而达到节约IP地址资源的目的。比如一个路由器覆盖的了一个局域网,这个路由器上只有一个WAN网关分配了一个公网IP,而连接这台路由器的所有计算机都分配的是私网IP。
NAT(Network Address Translation,网络地址转换)技术,它可以按照某种算法将局域网内的某个私网IP转换成路由器WAN网关的公网IP,也可以将路由器WAN网关的公网IP逆向转换回局域网内的某个私网IP。现在的路由器里都已经集成了NAT技术所需的软件。
3、MAC地址
MAC地址相关的关键词:MAC地址、ARP广播
3.1 MAC地址是什么
MAC地址(Media Access Control Address,网卡地址):一台计算机上可以有多个网卡,网卡是真正用来接收网络数据的硬件设备,每一个网卡都有一个6字节(48位)的网卡地址,这个地址是全世界唯一的,被固化在了网卡的Rom中。
3.2 MAC地址的获取
ARP协议(Address Resolution Protocol,地址解析协议):当我们不知道对方计算机的MAC地址时,可以通过发送ARP广播来获取对方计算机的MAC地址。所谓发送ARP广播来获取对方计算机的MAC地址,是指我们的计算机会给跟它处于同一网段(注意ARP广播只能在同一个网段内发送,不能跨网段发送)的所有计算机都发送一个数据包,其它的计算机在收到数据包后,如果发现数据包里的目标IP地址跟自己一样,就会把自己的MAC地址打包返回给我们的计算机,否则就将数据包丢弃。获取MAC地址成功后,我们的计算机就会缓存对方计算机IP地址和MAC地址的映射关系,俗称ARP缓存,以后再给那台计算机发送数据时就会去ARP缓存里拿相应的MAC地址,而不必再发送ARP广播。
三、网络分层
1、网络互联模型
1985年以前已经有互联网了,但是当时很混乱,不同的公司有不同的网络协议,比如我们想访问公司A的服务器,就要按照网络协议A的格式给他们发数据,我们想访问公司B的服务器,就要按照网络协议B的格式给他们发数据。为了促进互联网的发展,1985年国际标准化组织制定了OSI参考模型,该模型就规定了一台计算机要想给另一台计算机传输数据需要遵守哪些标准。
但是OSI参考模型是个纯理论的模型,制定这套模型的专家们也不一定有深厚的实战经验,所以当时的互联网公司没有采用这套完整的模型,而是在用一套已经得到广泛实战认可的模型——TCP/IP协议模型,我们现在实战中用的也还是这套模型。我们平常所说的TCP/IP协议这个专业术语,它其实指的就是这个网络互联模型,或者说指的就是这个网络互联模型里所有协议的集合——是一个协议家族,我们平常见到的那些协议都属于这个协议家族,你千万不要以为它仅仅指的是TCP和IP这两个协议,之所以叫这个名字只不过是因为TCP和IP这两个协议是这个协议家族中最早通过的标准。
但是为了学习研究物理层和数据链路层,许多高校的计算机教材里又会有一个网络五层模型, 后面我们就按网络五层模型来学习。
比如客户端给服务器发送一个HTTP请求(应用层),那这个HTTP请求真正想发给服务器的数据其实经过了四层的包装(传输层、网络层、数据链路层、物理层)才发给服务器,服务器拿到数据后又会逆着解封装出来HTTP请求真正的数据,进而交给Tomcat、Java项目等处理。
所谓应用层可以理解为就是我们所写的应用程序——如App、网页等,然后应用层对应的协议可以理解为我们所写的应用程序可能会发出什么请求——如HTTP请求、FTP请求等。但不管应用层发出的是什么请求,这个请求到了传输层后要么对应的是TCP请求,要么对应的是UDP请求。
数据在应用层时我们通常把它叫作报文,到了传输层我们通常把它叫作段,到了网络层我们通常把它叫作包,到了数据链路层我们通常把它叫作帧,到了物理层我们通常把它叫作比特流。
2、网络层
传输层的数据(如TCP数据段)到了网络层,会被包装上一个网络层头部(如IP头部),最终构成IP数据包。
IP数据包头部的主要内容是4个字节的源IP地址 + 4个字节的目标IP地址 + 2个字节的总长度(即整个IP数据包的总长度) + ......。
3、数据链路层
网络层的数据(如IP数据包)到了数据链路层,会被包装上一个数据链路层头部(如以太网帧头部)和一个数据链路层尾部(如以太网帧尾部),最终构成以太网帧。
以太网帧头部的主要内容是6个字节的源MAC地址 + 6个字节的目标MAC地址 + 2个字节的网络类型(IPv4还是IPv6),以太网帧尾部的主要内容是4个字节的FCS用来做差错检验。
此外,关于数据链路层我们还需要知道MTU(最大传输单元)这个概念,它规定了每一帧的数据部分最大能传输多少个字节,比如以太网的MTU是1500个字节。
4、物理层
数据链路层的数据(如以太网帧)到了物理层,会在头部包装上一个同步码和帧开始界定符。