一、基本概念
1.1 什么是网络协议?
- 互联网上端对端实现互联过程中,必须有各种各样的协议规定传输的方式,其中最常见的协议就是 HTTP
1.2 Java跨平台原理
-
利用各个平台安装的JVM(Java虚拟机),运行Java程序, 一次编译,多端运行
1.3 C/C++ 跨平台原理
-
使用平台自己的编译器生成对应平台的可执行文件
1.4 网络互连模型
1.5 请求过程
- 每一层对数据进行包装后,传给下一层,下一层再进行包装,依次类推
-
每一次向上回传时,解除自己对应层的包装后,传给上一层,以此类推
1.6 每个层对应的协议和应用
1.7 计算机互连方式
网线直连
-
同轴电缆
- 半双工通信
- 容易冲突
- 不安全
-
中间断了,整个瘫痪
-
集线器(Hub)
-
跟同轴电缆一样
-
-
网桥
-
能够通过自学习得知每个接口那侧的地址,从而起到隔绝冲突域的作用
育
-
-
交换机
- 相当于更多接口的网桥
- 全双工通信
- 比集线器安全
-
路由器
- 多个不同网段之间转发数据。(网线直连,同轴电缆、集线器、网桥、交换机只能在同一网段,连接设备处于同一广播域)
- 隔绝广播域(ARP广播)
二、MAC地址和IP地址
2.0 网络连接流程:由对方IP地址解析成MAC物理网卡地址再进行连接通信
2.1 ARP
- 通过IP地址发出ARP广播,获取设备的MAC地址
2.2 RAPP、DHCP
- 逆地址解析,由MAC地址解析出IP地址
2.2 ICMP
- 互联网控制消息协议
- 用于返回错误信息
2.3 IP地址的组成
- 网络ID + 主机ID (由子网掩码计算出来)
2.4 IP地址的分类
- A类:1 ~ 126
- B类:127 ~ 191
- C类:192 ~223
- D类:224 ~ 239
2.5 子网掩码的CIDR表示法
- 192.168.1.100/24,代表子网掩码有24个1,也就是255.255.255.0
- 123.210.100.200/16,代表子网掩码有16个1,也就是255.255.0.0
- 计算工具:https://www.sojson.com/convert/subnetmask.html
2.6 为什么要进行子网划分
- 让更多同类IP划分到同一网段,节省IP地址资源
三、路由
3.0 作用:跨网段通信
3.1 公网IP、私网IP
- 公网IP由ISP(通信运营商向Inter NIC(因特网信息中心)申请)
- 私网IP主要用于局域网
- Internet上的路由器只有达到公网的路由表,没有达到私网的路由表
- 公网就是我们日常上网用到的IP,私网就是公司内部服务器的私有IP
3.2 NAT
- 私网IP访问公网IP需要进行NAT转换
- 可以节约公网IP资源
- 会隐藏内部正式IP
- 静态转换
- 动态转换
- PAT,多对一转换,采用端口多路复用,是目前使用最广泛的方式
四、物理层
4.0 主要定义了接口标准、线缆标准、传输速率、传输方式
4.1 数字信号、模拟信号
主要是物理设备,比如光猫,把模拟信号转化为数字信号,这部分没什么好说的
五、数据链路层
5.0 从1个节点到相邻节点的一段物理路线(有线或无线),中间没有其他交换交点
六、网络层
6.0 决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络资料。例如:互联网协议(IP)等。
七、传输层
7.0 主要有两个协议
- TCP
-
UDP
详情请看:
八、应用层
8.1 应用场景
- 超文本传输:HTTP、HTTPS
- 文件传输:FTP
- 电子邮件:SMTP、POP3、IMAP
- 动态主机配置:DHCP
- 域名系统:DNS
8.0 DNS
- 将域名转化为IP地址
- 基于UDP或TCP协议,占用53端口
8.1 DHCP
- 动态主机配置协议
- 基于UDP协议,客户端口为68端口
- DHCP服务器会从IP地址池中,挑选一个IP地址“出租“给客户端一段时间,时间到期就回收它们
- 平时家里上网的路由器就可以充当DHCP服务器
九、HTTP
9.0 超文本传输协议
- 是互联网中应用最广泛的应用层协议之一
- 设计HTTP最初的目的是:提供一种发布和接收HTML页面的方法,由URI来标识具体的资源
- 后面用HTTP来传递的数据格式不仅仅是HTML,应用非常广泛
- HTML( Hyper Text Markup Language):超文本标记语言
- 用以编写网页
9.1 历代版本
- 1991年 HTTP/0.9:只是Get请求
- 1996年 HTTP/1.0 :
- 支持POST、HEAD等请求方法,支持请求头、响应头等,支持更多种数据类型(不再局限于文本数据)
- 浏览器的每次请求都需要与服务器建立一个TCP连接,请求处理完成后立即断开TCP连接
- 1997年,HTTP/1.1(最经典、使用最广泛的版本)
- 支持PUT、DELETE等请求方法
- 采用持久连接(Connection: keep-alive),多个请求可以共用同一个TCP连接
- 2015年,HTTP/2.0
- 2018年,HTTP/3.0
9.2 报文
9.3 请求方式
9.4 状态码
9.5 代理
- 正向代理:代理的对象是客户端
- 作用:隐藏客户端身份、绕过防火墙、Internet访问控制、数据过滤
- 反向代理:代理的对象是服务器
- 作用:隐藏服务器身份、安全防护、负债均衡
9.6 抓包工具的原理
- Fiddler、Charles等抓包工具的原理:在客户端启动了正向代理服务
- Wireshark的原理是:通过底层驱动,拦截网卡上流过的数据
9.7 CDN 内容分发网络
- 利用最靠近每位用户的服务器
- 更快更可靠地将音乐、图片、视频等资源文件(一般是静态文件)放到CDN服务器,再由CDN服务器传递给用户
十、网络安全
10.1 网络层---ARP欺骗
- 可让攻击者获取局域网上的数据包甚至可篡改数据包
- 可让网络上特定电脑之间无法正常通信(例如网络执法官这样的软件)
- 让送至特定IP地址的流量被错误送到攻击者所取代的地方
10.2 ARP欺骗---防护
- 静态ARP
- DHCP Snooping
- 网络设备可借由DHCP保留网络上各电脑的MAC地址,在伪造的ARP数据包发出时即可侦测到
- 利用一些软件监听ARP的不正常变动
10.3 Dos、DDos攻击
- DoS攻击(拒绝服务攻击,Denial-of-Service attack)
- 使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问
- DDoS攻击(分布式拒绝服务攻击,Distributed Denial-of-Service attack)
- 黑客使用网络上两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动DoS攻击 -
- 2018年3月,GitHub遭到迄今为止规模最大的DDoS攻击
- DoS攻击可以分为2大类
- 带宽消耗型:UDP洪水攻击、ICMP洪水攻击
- 资源消耗型:SYN洪水攻击、LAND攻击
10.4 Dos、DDos防御
-
防御方式通常为:入侵检测、流量过滤、和多重验证
- 堵塞网络带宽的流量将被过滤,而正常的流量可正常通过
-
防火墙
- 防火墙可以设置规则,例如允许或拒绝特定通讯协议,端口或IP地址
- 当攻击从少数不正常的IP地址发出时,可以简单的使用拒绝规则阻止一切从攻击源IP发出的通信
- 复杂攻击难以用简单规则来阻止,例如80端口遭受攻击时不可能拒绝端口所有的通信,因为同时会阻止合法流量
- 防火墙可能处于网络架构中过后的位置,路由器可能在恶意流量达到防火墙前即被攻击影响
交换机:大多数交换机有一定的速度限制和访问控制能力
路由器:和交换机类似,路由器也有一定的速度限制和访问控制能力
-
黑洞引导
- 将所有受攻击计算机的通信全部发送至一个“黑洞”(空接口或不存在的计算机地址)或者有足够能力处理洪流的网络设备商,以避免网络受到较大影响
-
流量清洗
- 当流量被送到DDoS防护清洗中心时,通过采用抗DDoS软件处理,将正常流量和恶意流量区分开
- 正常的流量则回注回客户网站
10.5 应用层 --- DNS挟持
- DNS劫持,又称为域名劫持
攻击者篡改了某个域名的解析结果,使得指向该域名的IP变成了另一个IP
导致对相应网址的访问被劫持到另一个不可达的或者假冒的网址
从而实现非法窃取用户信息或者破坏正常网络服务的目的 - 为防止DNS劫持,可以考虑使用更靠谱的DNS服务器,比如:114.114.114.114
谷歌:8.8.8.8、8.8.4.4
微软:4.2.2.1、4.2.2.2
百度:180.76.76.76
阿里:223.5.5.5、223.6.6.6 - HTTP劫持:对HTTP数据包进行拦截处理,比如插入JS代码
比如你访问某些网站时,在右下角多了个莫名其妙的弹窗广告
10.5 HTTP协议的安全问题
◼ HTTP协议默认是采取明文传输的,因此会有很大的安全隐患 常见的提高安全性的方法是:对通信内容进行加密后,再进行传输
◼ 常见的加密方式有
不可逆
✓ 单向散列函数:MD5、SHA等 可逆
✓ 对称加密:DES、3DES、AES等 ✓ 非对称加密:RSA等
其它
✓ 混合密码系统
✓ 数字签名
✓证书
TODO:待续