计算机网络学习笔记


本文内容部分出自小林coding

TCP和UDP的区别

1.TCP是可靠传输,UDP是不可靠传输

2.TCP面向字节流,UDP面向数据包

3.TCP只能一对一进行传输,而UDP支持一对一、一对多、多对多

4.TCP面向连接,UDP无连接

端口的作用

当设备作为接收⽅时,传输层则要负责把数据包传给应⽤,但是⼀台设备上可能会有很多应⽤在接收或者传输数 据,因此需要⽤⼀个编号将应⽤区分开来,这个编号就是端⼝。

⽹络层最常使⽤的是 IP 协议

IP 协议会将传输层的报⽂作为数据部分,再加上 IP 包头组装 成 IP 报⽂,如果 IP 报⽂⼤⼩超过 MTU(以太⽹中⼀般为 1500 字节)就会再次进⾏分⽚,得到⼀个即将发送到⽹ 络的 IP 报⽂。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kF8CJuGy-1675317716120)(C:\Users\ICONIC\AppData\Roaming\Typora\typora-user-images\image-20220924153337766.png)]

应用层

应⽤层只需要专注于为⽤户提供应⽤功能,不⽤去关⼼数据是如何传输的,就类似于,我们寄快递的时候, 只需要把包裹交给快递员,由他负责运输快递,我们不需要关⼼快速是如何被运输的。

传输层

传输层(Transport Layer)是为应⽤层提供⽹络⽀持的。

网络层

我们不希望传输层协议处理太多的事情,只需要服务好应⽤即可,让其作为应⽤间数据传输的媒介,帮 助实现应⽤到应⽤的通信,⽽实际的传输功能就交给下⼀层,也就是⽹络层

数据链路层

有⼀个专⻔的层来标识⽹络中的设备,让数据在⼀个链路中传输,这就是数据链路层(Data Link Layer),它主要为⽹络层提供链路级别传输的服务

每⼀台设备的⽹卡都会有⼀个 MAC 地址,它就是⽤来唯⼀标识设备的。路由器计算出了下⼀个⽬的地 IP 地址,再 通过 ARP 协议找到该⽬的地的 MAC 地址,这样就知道这个 IP 地址是哪个设备的了。

物理层

当数据准备要从设备发送到⽹络时,需要把数据包转换成电信号,让其可以在物理介质中传输,这⼀层就是物理层 (Physical Layer),它主要是为数据链路层提供⼆进制传输的服务

HTTP协议(超文本传输协议)

状态码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ji96MU5l-1675317716122)(C:\Users\ICONIC\AppData\Roaming\Typora\typora-user-images\image-20220924155405145.png)]

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 做了哪些优化?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z93xW7BH-1675317716126)(C:\Users\ICONIC\AppData\Roaming\Typora\typora-user-images\image-20220924161320402.png)]

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

在这里插入图片描述

滑动窗口

在这里插入图片描述

流量控制
拥塞控制

在这里插入图片描述

慢启动

在这里插入图片描述

拥塞避免

在这里插入图片描述

拥塞发⽣

在这里插入图片描述

快速恢复

在这里插入图片描述

TCP 半连接队列和全连接队列?

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值