一、网络模型分层
1、OSI模型(开放式系统互联通信参考模型,英语:Open System Interconnection Reference Model,缩写为 OSI),
OSI定义了网络互连的七层框架,从高到低分别是:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
物理层:为网络数据传输提供物理条件,把通信介质(双绞线--电信号,光纤--光信号,无线网卡--电磁波等..)转化成数字信号
数据链路层:通过网卡MAC地址,负责主机间数据的传输
网络层: 通过IP寻址来建立两个节点之间的连接
传输层:建立主机端到端的连接,该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。该层常见的协议有TCP,UDP,SCTP,DCCP等。
会话层: 管理传输层的传输方式(TCP,UDP...),建立会话(通过TCP建立会话时有3次握手)
表示层:负责数据的编码解码,加密解密,压缩和解压缩。主要作用进行格式兼容传输数据(确认格式)
应用层:该层负责为应用软件提供接口,使应用程序能够使用网络服务。常见的应用层协议:http(80)、ftp(20/21)、smtp(25)、pop3(110)、telnet(23)、dns(53)等。
以下是模型图示:
2、数据封装,解封装图示:
在应用层,数据转化为二进制语言。在传输层,上层数据被分割成小的数据段,并为每个分段后的数据封装 TCP 报文头部。 在 TCP 头部有一个关键的字段信息——端口号,它用于标识上层的协议或应用程序,确保上层应用数据的正常通信。在网络层,上层数据被封装上新的报文头部——IP 头部。 在 IP 头部中有一个关键的字段信息——IP 地址,它是由一组 32 位的二进制数组成的, 用于标识网络的逻辑地址。在数据链路层,上层数据被封装一个 MAC 头部,其内部有一个关键的字段信息 ——MAC 地址,它由一组 48 位的二进制数组成。在 MAC 头部也同时封装着目标 MAC 地址和源 MAC 地址。在物理层,将这些二进制数字组成的比特流转换成电信号在网络中传输。
在物理层,首先将电信号转换成二进制数据,并将数据送至数据链路层。在数据链路层, 将查看目标 MAC 地址,判断其是否与自己的 MAC 地址吻合,并据此完成后续处理。如果 数据报文的目标 MAC 地址就是自己的 MAC 地址,数据的 MAC 头部将被“拆掉”,并将剩余 的数据送至上一层;如果目标 MAC 地址不是自己的 MAC 地址,对于终端设备来说,它将 会丢弃数据。在网络层与在数据链路层类似,目标 IP 地址将被核实是否与自己的 IP 地址相 同,从而确定是否送至上一层;到了传输层,首先要根据 TCP 头部判断数据段送往哪个应 用层协议或应用程序,然后将之前被分组的数据段重组,再送往应用层;在应用层,这些二 进制数据将经历复杂的解码过程,以还原发送者所传输的原始信息。
二、交换机
1、交换机,是一个扩大网络的器材,能为子网络提供更多的连接端口,以便连接更多的计算机(例如网吧)。它的功能是连接计算机、服务器、网络打印机、网络摄像头、IP电话等终端设备,并实现与其它交换机、无线接入点、路由器、网络防火墙等网络设备的互联,从而构建局域网络,实现所有设备之间的通信。交换机位于OSI参考模型中的第二层(数据链路层),交换机的工作依赖于对MAC地址的识别(所有的网络设备都有一个唯一的MAC地址,通常是由厂商直接录进网卡中)。
2、交换(扩充网线插槽,让更多的人,在同一个局域网共享上网)
如下图的交换机,一边连接路由器,一边连接个人PC(交换机提供很多接口,可以连接很多PC)。路由器(网关,网络关口,连接不同网络)至少有2个口,一个接公网IP,一个接内网(该内网ip下面连接交换机以至于拓展多个终端设备,使得大家可以在同一个局域网内上网),内外网转换的技术是NAT(网络地址转换,主要用于实现私有网络访问公共网络的功能,Network Address Translation),
例如,运营商拉一条网线进来,通过交换机分给多个用户家庭使用,用的都是同一个内网IP,想要自己独享一个公网ip就得向运营商申请。
例如自己家用路由器的默认网关是10.198.1.1,和网上搜的本机IP不同,所以自己的网络是一个内网(其实家用路由器的默认网关是10开头的就是内网来的)
三、IP,Internet Protocol(网际互连协议)
1、IP地址(Internet Protocol Address)是指协议地址,又译为网际协议地址。每个IP地址包括两个标识码(ID),即网络ID和主机ID。
IP地址是一个32位的二进制数,通常被分割为4个“8位数”(也就是4个字节)。IP地址通常用表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数(0.0.0.0 ~ 255.255.255.255)。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
2、IPv4地址约43亿个,正常来说是不够所有终端使用的,所以有了IPv6和NAT(地址转换)技术,目前用的较多的是NAT。NAT是划分出一部分地址作为私网地址,剩下的就是公网地址。
私有IP地址范围(私有地址属于非注册地址,专门为组织机构内部使用。):
3、无论是公网IP还是私网IP,都分了以下几大类:
注:
A类IP地址 :
0-127,其中0代表任何地址,127为回环测试地址,因此,A类ip地址的实际范围是1-126.
B类IP地址 :
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。
B:128-191,其中128.0.0.0和191.255.0.0为保留ip,实际范围是128.1.0.0--191.254.0.0。
C类IP地址 :
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。
C:192-223,其中192.0.0.0和223.255.255.0为保留ip,实际范围是192.0.1.0--223.255.254.0
四、子网掩码
1、子网掩码:用于识别IP地址中的网络号和主机号的位数。将一个IP地址划分成网络地址和主机地址2个部分,它是不能单独存在的,它必须和IP地址一起使用。子网掩码中1的个数表示IP地址的有多少位表示网络地址,0的个数表示IP地址有多少位表示主机地址。
A类地址的默认子网掩码:255.0.0.0
B类地址的默认子网掩码:255.255.0.0
C类地址的默认子网掩码:255.255.255.0
例子1:假设有一个IP地址:192.168.0.1
子网掩码为: 255.255.255.0
化为二进制IP地址为: 11000000.10101000.00000000.00000001
子网掩码: 11111111.11111111.11111111.00000000
将两者做 ’ 与 ’ 运算得: 11000000.10101000.00000000.00000000
将其化为十进制得: 192.168.0.0
这便是上面 IP 的网络地址(一个 IP地址的网络部分被称为网络号或者网络地址),主机地址以此类推。
例子2:求子网地址(网络地址)
个人理解:首先将IP地址和子网掩码都转换成二进制,然后根据子网掩码判断出该IP地址的网络位数和主机位数,最后将IP地址的主机位上的0或1全部转成0(相当于和子网掩码进行或运算的结果),再转成十进制,这样就是网络地址。
例子3:例如搞一个只有4台主机的子网,确认它的子网掩码
2、作用:子网划分
问题一:
问题二:
步骤1:
步骤2:
步骤3:
可用IP地址范围在主机号全为0(网络号,或者网络地址)和全为1(广播地址)时不能用。
五、TCP/IP协议
1、TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server)
2、TCP三次握手
所谓三次握手即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:
简单来说,就是
a、建立连接时,客户端发送SYN包(SYN=i)到服务器,并进入到SYN-SEND状态,等待服务器确认
b、服务器收到SYN包,必须确认客户的SYN(ack=i+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN-RECV状态
c、客户端收到服务器的SYN+ACK包,向服务器发送确认报ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。
在网上看到这样的话,三次握手可以这样描述:
客户端:hello,听得到吗?
服务端:听得到,你听的到吗?
客户端:听得到,我们可以发送信息了
3、四次挥手
tcp是全双工通信,服务端和客服端都能发送和接收数据。tcp在断开连接时,需要服务端和客服端都确定对方将不再发送数据。
第1次挥手由客户端向服务端发起,服务端收到信息后就能确定客户端已经停止发送数据。
第2次挥手由服务端向客户端发起,客户端收到消息后就能确定服务端已经知道客户端不会再发送数据。
第3次握手由服务端向客户端发起,客户端收到消息后就能确定服务端已经停止发送数据。
第4次挥手由客户端向服务端发起,服务端收到信息后就能确定客户端已经知道服务端不会再发送数据。
4、TCP和UDP协议的区别
a:TCP提供面向连接的传输,通信前要先建立连接(三次握手机制); UDP提供无连接的传输,通信前不需要建立连接。
b:TCP提供可靠的传输(有序,无差错,不丢失,不重复); UDP提供不可靠的传输。
c:TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组; UDP是面向数据报的传输,没有分组开销。
d:TCP提供拥塞控制和流量控制机制; UDP不提供拥塞控制和流量控制机制。
e:TCP稳定可靠(例如传输文件,浏览网页等);UDP速度快但是可能产生丢包(例如语音通话,视频直播,隧道网络(VPN)等)
例如下图:HTTP/1.1 和 HTTP/2 都是基于 TCP 传输协议的,而 HTTP/3 是基于 UDP 传输协议的。
六、HTTPS,SSL
HTTPS : 即HTTP Over TLS,运行在TLS协议上的安全的HTTP协议。保证信息安全的唯一途径:数据信息加密!!!
TLS是SSL的升级版,打开F12,可以看到使用的是TLS1.2,后面是加密算法:
从下面图中可以看出,SSL就是负责加解密的,tcp通信前需要握手,ssl也是:
SLL握手(4次):
1、HTTPS和HTTP的区别
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
a: https协议需要到ca申请证书,一般免费证书很少,需要交费。
b: http是超文本传输协议信息是明文传输,https 则是具有安全性的ssl加密传输协议。
c: http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
d: http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。