计算机网络学习笔记
本文内容部分出自小林coding
TCP和UDP的区别
1.TCP是可靠传输,UDP是不可靠传输
2.TCP面向字节流,UDP面向数据包
3.TCP只能一对一进行传输,而UDP支持一对一、一对多、多对多
4.TCP面向连接,UDP无连接
端口的作用
当设备作为接收⽅时,传输层则要负责把数据包传给应⽤,但是⼀台设备上可能会有很多应⽤在接收或者传输数 据,因此需要⽤⼀个编号将应⽤区分开来,这个编号就是端⼝。
⽹络层最常使⽤的是 IP 协议
IP 协议会将传输层的报⽂作为数据部分,再加上 IP 包头组装 成 IP 报⽂,如果 IP 报⽂⼤⼩超过 MTU(以太⽹中⼀般为 1500 字节)就会再次进⾏分⽚,得到⼀个即将发送到⽹ 络的 IP 报⽂。
应用层
应⽤层只需要专注于为⽤户提供应⽤功能,不⽤去关⼼数据是如何传输的,就类似于,我们寄快递的时候, 只需要把包裹交给快递员,由他负责运输快递,我们不需要关⼼快速是如何被运输的。
传输层
传输层(Transport Layer)是为应⽤层提供⽹络⽀持的。
网络层
我们不希望传输层协议处理太多的事情,只需要服务好应⽤即可,让其作为应⽤间数据传输的媒介,帮 助实现应⽤到应⽤的通信,⽽实际的传输功能就交给下⼀层,也就是⽹络层
数据链路层
有⼀个专⻔的层来标识⽹络中的设备,让数据在⼀个链路中传输,这就是数据链路层(Data Link Layer),它主要为⽹络层提供链路级别传输的服务
每⼀台设备的⽹卡都会有⼀个 MAC 地址,它就是⽤来唯⼀标识设备的。路由器计算出了下⼀个⽬的地 IP 地址,再 通过 ARP 协议找到该⽬的地的 MAC 地址,这样就知道这个 IP 地址是哪个设备的了。
物理层
当数据准备要从设备发送到⽹络时,需要把数据包转换成电信号,让其可以在物理介质中传输,这⼀层就是物理层 (Physical Layer),它主要是为数据链路层提供⼆进制传输的服务
HTTP协议(超文本传输协议)
状态码
301:永久重定向,说明请求的资源已经不存在了,需改⽤新的 URL 再次访问
302:表示临时重定向,说明请求的资源还在,但暂时需要⽤另⼀个 URL 来访问
304:不具有跳转的含义,表示资源未修改,重定向已存在的缓冲⽂件,也称缓存᯿定向,⽤于缓 存控制
403 Forbidden:表示服务器禁⽌访问资源,并不是客户端的请求出错
502 Bad Gateway:通常是服务器作为⽹关或代理时返回的错误码,表示服务器⾃身⼯作正常,访问后端服务器 发⽣了错误
503 Service Unavailable:表示服务器当前很忙,暂时⽆法响应服务器,类似“⽹络服务正忙,请稍后᯿试”的意 思
常见字段
host:指定服务器域名
Content-Length:表明本次回应的数据⻓度
Connection:最常⽤于客户端要求服务器使⽤ TCP 持久连接,以便其他请求复⽤
Content-Type:⽤于服务器回应时,告诉客户端,本次数据是什么格式
Content-Encoding:表示服务器返回的数据使⽤了什么压缩格式
那你再说下 HTTP/1.1 的性能如何?
HTTP 与 HTTPS 有哪些区别?
SSL/TLS 协议基本流程
客户端向服务器索要并验证服务器的公钥。
双⽅协商⽣产「会话秘钥」。
双⽅采⽤「会话秘钥」进⾏加密通信。
那上⾯的 HTTP/1.1 的性能瓶颈,HTTP/2 做了什么优化?
\1. 头部压缩
HTTP/2 会压缩头(Header)如果你同时发出多个请求,他们的头是⼀样的或是相似的,那么,协议会帮你消除重 复的部分。 这就是所谓的 HPACK 算法:在客户端和服务器同时维护⼀张头信息表,所有字段都会存⼊这个表,⽣成⼀个索引 号,以后就不发送同样字段了,只发送索引号,这样就提⾼速度了。
\2. ⼆进制格式
\3. 数据流、
HTTP/2 的数据包不是按顺序发送的,同⼀个连接⾥⾯连续的数据包,可能属于不同的回应。因此,必须要对数据 包做标记,指出它属于哪个回应。 每个请求或回应的所有数据包,称为⼀个数据流( Stream )。每个数据流都标记着⼀个独⼀⽆⼆的编号,其中规 定客户端发出的数据流编号为奇数, 服务器发出的数据流编号为偶数 客户端还可以指定数据流的优先级。优先级⾼的请求,服务器就先响应该请求。
\4. 多路复⽤
HTTP/2 是可以在⼀个连接中并发多个请求或回应,⽽不⽤按照顺序⼀⼀对应。 移除了 HTTP/1.1 中的串⾏请求,不需要排队等待,也就不会再出现「队头阻塞」问题,降低了延迟,⼤幅度提⾼ 了连接的利⽤率。 举例来说,在⼀个 TCP 连接⾥,服务器收到了客户端 A 和 B 的两个请求,如果发现 A 处理过程⾮常耗时,于是就 回应 A 请求已经处理好的部分,接着回应 B 请求,完成后,再回应 A 请求剩下的部分。
\5. 服务器推送
HTTP/2 还在⼀定程度上改善了传统的「请求 - 应答」⼯作模式,服务不再是被动地响应,也可以主动向客户端发 送消息。 举例来说,在浏览器刚请求 HTML 的时候,就提前把可能会⽤到的 JS、CSS ⽂件等静态资源主动发给客户端,减 少延时的等待,也就是服务器推送(Server Push,也叫 Cache Push)。
HTTP/2 有哪些缺陷?HTTP/3 做了哪些优化?
HTTP1.1怎么优化
使⽤ KeepAlive 将 HTTP/1.1 从短连接改成⻓链接
1.本地磁盘生成缓存,url为key,响应内容为value
2.重定向的⼯作交由代理服务器完成,就能减少 HTTP 请求次数了
HTTPS怎么优化
HTTP2缺点
TCP
TCP头格式
TCP连接
如何唯⼀确定⼀个 TCP 连接呢
防止历史连接初始化了连接
同步双方序列号
TCP 重传、滑动窗⼝、流量控制、拥塞控制
超时重传
快速重传
所以,快速᯿传的⼯作⽅式是当收到三个相同的 ACK 报⽂时,会在定时器过期之前,᯿传丢失的报⽂段。 快速᯿传机制只解决了⼀个问题,就是超时时间的问题,但是它依然⾯临着另外⼀个问题。就是重传的时候,是重 传之前的⼀个,还是重传所有的问题。 ⽐如对于上⾯的例⼦,是᯿传 Seq2 呢?还是᯿传 Seq2、Seq3、Seq4、Seq5 呢?因为发送端并不清楚这连续的 三个 Ack 2 是谁传回来的。 根据 TCP 不同的实现,以上两种情况都是有可能的。可⻅,这是⼀把双刃剑。 为了解决不知道该᯿传哪些 TCP 报⽂,于是就有 SACK ⽅法。
SACK
滑动窗口
流量控制
拥塞控制
慢启动
在这里插入图片描述