物理层
数据链路层:以太网协议
网络层 :IP协议 ARP协议(地址解析协议) ICMP协议(控制报文协议)

传输层:

UDP协议:

  • 无连接协议
  • 不能保证可靠的交付数据
  • 面向报文传输,不做处理
  • 没有拥塞控制、头部开销很小

TCP协议(重点)

传输控制协议

  • 面向连接的协议
  • 有两端,点对点通信
  • 提供可靠的传输服务
  • 是全双工(两端可以同时发送接收数据)的通信
  • 是面向字节流的协议(面向单个字节进行处理,因此可以将数据进行拆分/合并传输)
其中:如果确认号是N,则代表N-1序号的数据都已经收到
(1)TCP的可靠传输
首先,要了解可靠传输的基本原理:停止等待协议、连续ARQ协议
停止等待协议
在理想情况下:接收方、发送方都处在停止——等待的过程里
每发送一个消息,就设置一个 超时定时器
在出现差错的情况下,就可以通过超时重传解决

连续ARQ协议
自动重传请求
在停止等待协议基础上,用来解决信道利用率不高的情况
通过滑动窗口批量发送数据,并且通过累计确认减少确认次数

而 TCP 可靠传输就是基于 ARQ协议的 它的滑动窗口以字节为单位,如果没有按顺序收到确认号,可以进行选择重传
(2)TCP的流量控制
即 让发送方的发送速率不要太快,同样是利用滑动窗口实现的
当窗口为0后,会启动坚持定时器,避免死锁
  • 当接收到窗口为0时,则启动坚持定时器
  • 坚持定时器每隔一段时间发送一个窗口探测报文
(3)TCP的拥塞控制

和流量控制不同,流量控制考虑点对点通信量的控制
拥塞控制考虑整个网络,是全局性的考虑
一般来说,报文超时则认为是拥塞
有两个
慢启动算法
从小到大逐渐增加发送数据量
每收到一个报文,下次发送量就+1

以指数增长 到达慢启动阈值后停止
拥塞避免算法
在到达阈值后启
只要网络不拥塞,就试探着调大发送量,试探着+1
(4)TCP的三次握手——建立连接
我一直没搞明白的重点来了!!!
首先,要了解TCP首部中的TCP标记:

三次握手如图所示:

从图中可以看出:发送方在第二次握手后就建立了连接,接收方在第三次后菜才建立链接
那么为什么要三次握手呢?二手为什么不行?
因为在二手的情况下:

但三手时,发送方已经建立连接后,就不会理会已经失效的请求

(5)TCP的四次挥手——断开连接

对于发送方,会有一个特殊阶段,即等待计时器:

等待计时器的时间为2MSL(最长报文段寿命X2)这个时间内,端口还没有被释放,不能立刻使用端口
那么为什么需要等待2MSL?
因为此时,最后一个报文(第四手)还没有确认,如果在2MSL时间内,接收方没有收到第四手,则接收方会重新发送第三手
除此以外,还能确保当前连接的所有报文都已经过期
UDP
多媒体信息分发
视频 语音 实时信息
及时某一时刻信息丢失也没有关系
TCP
可靠信息传输
金融交易 可靠通讯


应用层:

应用层的内容广泛,协议众多,它主要功能就是定义应用间通信的规则

(1)DNS(域名系统)详解

域——对应网络段
名——IP对应的名字
说白了,就是IP地址太难记了!我们就搞出来了个域名,但在请求的时候,是通过DNS服务将域名转换为真实的IP地址
非常常见的域名:www.taobao.com
顶级域
.com
分为两大类
  • 国家:cn us uk ca
  • 通用:com net gov org
顶级域名服务器
二级域
.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服务器上
整体流程为:
客户端连接服务器
客户端发送请求报文
有多种请求方法

最常用的
  • GET 获取指定的服务端资源
  • POST 提交数据到服务端(GET也行)
  • DELETE 删除指定的服务端资源
  • UPDATE 更新指定的服务端资源
那么如何指定呢?又有两种方法
在地址中指定——

在请求数据中指定——
把指定的信息写在请求报文的请求内容里

服务器处理请求
服务器访问Web资源

构造应答
发送应答
应答报文
重点是应答报文中的状态码
  • 200-299 成功状态码
  • 300-300 重定向状态码
  • 400-499 客户端错误状态码
  • 500-599 服务端错误状态码
HTTP工作的结构:
Web缓存 把热门数据缓存进去
Web代理
工作在客户端和服务端之间

防止sever暴露
CDN
内容分发网络
使用CDN可以进行多媒体内容的加速
比如 服务器在北京 它在广州建立一个CDN 备份一些内容
爬虫
爬虫本质是一个程序,网络机器人
在网络上走来走去
百度啊 谷歌啊 就是获取网络上的内容 提供搜索

(4)HTTPS协议

HTTP是明文传输的 不安全
所以在HTTP基础上,形成了HTTPS:https://<主机>:<端口>/<路径> 端口不在是80 而是443

学习加密模型:
对称加密 加密解密使用同一把钥匙
非对称加密
加密解密使用不同的钥匙
但A B是拥有一定数学关系的一组密钥
其中一把为 私钥 不公开
另一把是公钥 对外公开


数字证书:数字证书是可信任组织颁发给特定对象的认证
(注意:证书里面包含公钥)
SSL(安全套接层):位于应用层和传输层之间 是一个子层
  • 提供数据安全和数据完整服务
  • 对传输层数据进行加密后传输

接下来才是HTTPS协议的详解:
443端口的TCP连接
SSL安全参数握手(重点)
协商加密和解密的密钥 具体过程如下:


客户端发送数据
服务端发送数据