物理层
数据链路层:以太网协议
网络层 :IP协议 ARP协议(地址解析协议) ICMP协议(控制报文协议)
传输层:
UDP协议:
- 无连接协议
- 不能保证可靠的交付数据
- 面向报文传输,不做处理
- 没有拥塞控制、头部开销很小
TCP协议(重点):
传输控制协议
- 面向连接的协议
- 有两端,点对点通信
- 提供可靠的传输服务
- 是全双工(两端可以同时发送接收数据)的通信
- 是面向字节流的协议(面向单个字节进行处理,因此可以将数据进行拆分/合并传输)
其中:如果确认号是N,则代表N-1序号的数据都已经收到
(1)TCP的可靠传输
首先,要了解可靠传输的基本原理:停止等待协议、连续ARQ协议
停止等待协议 | 在理想情况下:接收方、发送方都处在停止——等待的过程里 每发送一个消息,就设置一个 超时定时器 在出现差错的情况下,就可以通过超时重传解决 |
连续ARQ协议 自动重传请求 | 在停止等待协议基础上,用来解决信道利用率不高的情况 通过滑动窗口批量发送数据,并且通过累计确认减少确认次数 |
(2)TCP的流量控制
即 让发送方的发送速率不要太快,同样是利用滑动窗口实现的
当窗口为0后,会启动坚持定时器,避免死锁
- 当接收到窗口为0时,则启动坚持定时器
- 坚持定时器每隔一段时间发送一个窗口探测报文
(3)TCP的拥塞控制
和流量控制不同,流量控制考虑点对点通信量的控制
拥塞控制考虑整个网络,是全局性的考虑
一般来说,报文超时则认为是拥塞
有两个
慢启动算法 | 从小到大逐渐增加发送数据量 每收到一个报文,下次发送量就+1 以指数增长 到达慢启动阈值后停止 |
拥塞避免算法 | 在到达阈值后启 只要网络不拥塞,就试探着调大发送量,试探着+1 |
我一直没搞明白的重点来了!!!
首先,要了解TCP首部中的TCP标记:
首先,要了解TCP首部中的TCP标记:
三次握手如图所示:
从图中可以看出:发送方在第二次握手后就建立了连接,接收方在第三次后菜才建立链接
那么为什么要三次握手呢?二手为什么不行?
因为在二手的情况下:
但三手时,发送方已经建立连接后,就不会理会已经失效的请求
(5)TCP的四次挥手——断开连接
对于发送方,会有一个特殊阶段,即等待计时器:
等待计时器的时间为2MSL(最长报文段寿命X2)这个时间内,端口还没有被释放,不能立刻使用端口
那么为什么需要等待2MSL?
因为此时,最后一个报文(第四手)还没有确认,如果在2MSL时间内,接收方没有收到第四手,则接收方会重新发送第三手。
除此以外,还能确保当前连接的所有报文都已经过期
UDP | 多媒体信息分发 视频 语音 实时信息 及时某一时刻信息丢失也没有关系 |
TCP | 可靠信息传输 金融交易 可靠通讯 |
应用层:
应用层的内容广泛,协议众多,它主要功能就是定义应用间通信的规则
(1)DNS(域名系统)详解
域——对应网络段
名——IP对应的名字
说白了,就是IP地址太难记了!我们就搞出来了个域名,但在请求的时候,是通过DNS服务将域名转换为真实的IP地址
非常常见的域名:www.taobao.com
顶级域 .com | 分为两大类
| 顶级域名服务器 |
二级域 .taobao | 就 很多 耳熟能详的那些都是 amazon baidu qq balabala | 域名服务器 |
三级域 www. | 也 好多呢 比如什么 www mail gama balabala | |
(2)DHCP协议
中文名:动态主机设置协议
是一个局域网协议,也是应用UDP协议的应用层协议
DHCP提供了一个配置:即插即用联网
它给你分配一个临时IP 用来解决局域网内ip问题
具体过程为:
(3)HTTP协议
来了!重点来了!!!
HTTP(HyperText Transfer Protocol,超文本传输协议)——超文本可以理解为 带超链接的文本
http(s)://<主机>:<端口>/<路径> | |
<主机> | IP地址 或 域名 |
<端口> | 默认端口号为80 也可以改为8080或者其他端口 |
<路径> | 指向特定的内容 |
整体流程为:
客户端连接服务器 | |
客户端发送请求报文 | 有多种请求方法 最常用的
在地址中指定—— 在请求数据中指定—— 把指定的信息写在请求报文的请求内容里 |
服务器处理请求 | |
服务器访问Web资源 | |
构造应答 | |
发送应答 | 应答报文 重点是应答报文中的状态码:
|
Web缓存 | 把热门数据缓存进去 |
Web代理 | 工作在客户端和服务端之间 防止sever暴露 |
CDN 内容分发网络 | 使用CDN可以进行多媒体内容的加速 比如 服务器在北京 它在广州建立一个CDN 备份一些内容 |
爬虫 | 爬虫本质是一个程序,网络机器人 在网络上走来走去 百度啊 谷歌啊 就是获取网络上的内容 提供搜索 |
(4)HTTPS协议
HTTP是明文传输的 不安全
所以在HTTP基础上,形成了HTTPS:https://<主机>:<端口>/<路径> 端口不在是80 而是443
学习加密模型:
对称加密 | 加密解密使用同一把钥匙 |
非对称加密 | 加密解密使用不同的钥匙 但A B是拥有一定数学关系的一组密钥 其中一把为 私钥 不公开 另一把是公钥 对外公开 |
数字证书:数字证书是可信任组织颁发给特定对象的认证
(注意:证书里面包含公钥)
SSL(安全套接层):位于应用层和传输层之间 是一个子层
- 提供数据安全和数据完整服务
- 对传输层数据进行加密后传输
接下来才是HTTPS协议的详解:
443端口的TCP连接 | |
SSL安全参数握手(重点) | 协商加密和解密的密钥 具体过程如下: |
客户端发送数据 | |
服务端发送数据 | |