计算机网络
网络层次划分
分为TCP/IP4层模型划分和OSI7层模型,对应关系如下
OSI七层协议、TCP/IP
![[]](https://img-blog.csdnimg.cn/20210412164109202.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTk1MjcyNA==,size_16,color_FFFFFF,t_70)
APR/RARP
IP/MAC地址的转换
IP/路由
网络层用来专门定义/寻址到主机的协议
TCP/IP协议
TCP的四种拥塞控制算法
原因是负载不均衡
1.慢开始
定义一个拥塞窗口cwnd,如果没有拥塞,就增大它,如果出现了拥塞,则减小cwnd
为防止cwnd增长过大,设置一个慢开始门限ssthresh状态变量
当cwnd<ssthresh时,使用慢开始算法。
当cwnd>ssthresh时,改用拥塞避免算法。
当cwnd=ssthresh时,慢开始与拥塞避免算法任意。
2.拥塞控制
参上
3.快重传
如果当发送端接收到三个重复的确认ACK时,则断定分组丢失,立即重传丢失的报文段,而不必等待重传计时器超时
两次duplicated ACK肯定是乱序造成的!
丢包肯定会造成三次duplicated ACK!
4.快恢复
UDP协议
面向无连接的通讯协议,可以实现广播发送
使用UDP协议包括:TFTP(简单文件传输协议)、SNMP(简单网络管理协议)、DNS(域名解析协议)、NFS、BOOTP
TCP是面向连接的,可靠的字节流服务;UDP是面向无连接的,不可靠的数据报服务。
UDP | TCP | |
---|---|---|
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠传输,不使用流量控制和拥塞控制 | 可靠传输,使用流量控制和拥塞控制 |
连接对象个数 | 支持一对一,一对多,多对一和多对多交互通信 | 只能是一对一通信 |
传输方式 | 面向报文 | 面向字节流 |
首部开销 | 首部开销小,仅8字节 | 首部最小20字节,最大60字节 |
适用场景 | 适用于实时应用(IP电话、视频会议、直播等) | 适用于要求可靠传输的应用,例如文件传输 |
TIME_WAIT
也就是两个2MSL,是主动关闭的一方发送完最后一个ACK后的状态
DNS
用来解析域名到ip地址
FTP
文件传输协议,端对端
HTTP
包结构:
状态码:
1xx:临时消息
2xx:成功
3xx:重定向
4xx:客户端错误
5xx:服务器错误
输入URL后的执行全过程
- 1)客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
- 2)在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
- 3)客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
- 4)客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
HTTP和HTTPS区别
加密 + 认证 + 完整性保护
- 默认端口:80/443
- HTTP不安全、HTTPS在SSL/TLS之上,对称和非对称加密,安全
- HTTP + 加密 + 认证 + 完整性保护 = HTPPS
- 混合加密:S给C一个公钥,C利用公钥加密对称加密共享秘钥,S利用自己的私钥解开共享秘钥。最后使用共享秘钥加密进行通信