计算机网络概论|青训营笔记

青训营笔记打卡第1天

【整体认识计算机网络

建立网络协议分层的认知

分析HTTP1、2、3关系

介绍CDN运行的基本原理

了解网络安全的基本原则】

分析方法:自底向上、自顶向下

计算机网络基础

网络组成部分:

主机:客户端和服务端(负责提供和接收信息)
路由器(负责传递信息)
网络协议(用于统一信息的格式,方便路由器和主机进行编码和解码)

区域网络、广域网、城域网 (定义)

信息交换的方式:
电路交换
分组交换

计算机网络分层(五层):

物理层
链路层
网络层*
运输层*
应用层*

协议

协议的存在依赖于连接
协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及发送或接受一条报文或者其他事件所采取的动作。

标头和载荷(类比收件信息)
【每一层都会把上层的表头和载荷弄成这一层的载荷】

HTTP协议示例:

联想截图_20230405163010.png
1、链路层-本地帧头部
Null/Loopback
(本地帧)十六进制:18 00 00 00 十进制 :24(代表此链路层帧使用的是IPv6)

2、链路层-IP协议头部
Internet Protocol Version 6, Src: ::1,Dst: ::1
包含IP协议的版本,原来的IP地址,目标IP地址

3、运输层-YCP协议头部
Transmission Control Protocol, Src Port: 11443, Dst Port:5555, Seq: 874, Ack: 2633

4、应用层-HTTP协议头部
GET /workspace/veplayer/tsconfig.json HTTP/1.1\r\n
对于HTTP真正的载荷是最后的几个字节

报文=链路层的头+IP协议的头+TCP协议的头+HTTP协议的头+HTTP正文

TCP协议格式

联想截图_20230413204252.png

Web中的网络(红色的是请求,蓝色是响应)
请求
第一行(起始行)中的三个要素包含请求方法、资源路径和HTTP请求版本。跟在后面的为头部,左边是头部的名称,冒号后为头部的内容(get请求没有正文)

联想截图_20230413205039.png
响应
第一行(状态行),包含三个要素HTTP版本、状态码和状态信息,其中状态信息是可以自定义的。跟在后面的为头部,跟请求后的头部类似,后面的空行将头部和正文分隔开来。

Web 应用
HTTP报文是可以直接以明文形式展示出来的
使用的是请求-响应模型【即:客户端发出请求后,需要服务器端先返回第一个请求的完整响应,客户端才可以发出第二个请求】(使网络利用率降低)(无法在一条链接上进行多路复用,在一个完整请求中插入另一部分请求的内容,会导致HTTP无法分辨这是来自于哪个请求的)(请求的头部会重复发送(如:cookie),增加了报文的体积)
队头堵塞:HTTP1.1常用的方案为建立多个TCP连接(成本巨大),同时发送多个请求

联想截图_20230413205903.png
HTTP 1.1 无法多路复用
假设现在有两个请求
请求1:
//main.js
console.log(‘hello world’);
请求二:
/* style.css */
body {
color:red;
}
例子:若服务器将两条请求交替发送,
客户端收到的结果:
body{
console.log(‘hello world’);
color: red;
}
无法判断

HTTP2:帧8192
将多个HTTP请求拆分到帧里面,每个帧可以携带来自不同HTTP请求的数据。【此处的帧和之前链路层的帧并不相同】

如:
request=style.css, content=‘body {’
request=main.js, content=‘concole.log(‘hello world’)
request=style.css, content=’ color: red;’
request=style.css, content=‘}’

通过每个帧的头部信息,就可以在每个帧中,分析出当前帧属于那个流,进而可以确定每个帧的载荷属于哪个请求。最终在浏览器/服务器中重组为完整的请求或响应。
如图:

联想截图_20230413213648.png
前三个字节是载荷长度
第四个字节是类型(表示这是一个DATA类型的帧)
第五个字节是类型对应的Flags(是DATA类型对应的标志位,最后一个数字是0表示当前这个帧还没有结束)
第六到第九字节:第一位:保留位,第2-32位:流ID
随后的8192个字节,表示载荷的内容
【帧带来除解决多路复用和队头堵塞问题外的好处:调整响应传输的优先级,头部压缩,Sever Push】
HTTP2问题:队头堵塞,但是在TCP上
握手

联想截图_20230413214841.png

联想截图_20230413215609.png
CDN:DNS劫持
域名解析一般由网站自己处理‘
要加速的域名则重定向到CDN厂商的域名解析服务处理
CDN厂商根据来源确定最近的CDN服务器IP
用户直接访问最近的CDN服务器

联想截图_20230413221316.png
WebSocket(要在HTTP协议建立的基础上)
有状态的持久连接
服务端可以主动推送消息
用WebSocket发送消息延迟比HTTP低
见下面两图

联想截图_20230413221617.png

联想截图_20230413221642.png
WebSocket与HTTP关系
客户端发出Get请求
然后Connection: Upgrade\r\n表示想要把HTTP请求升级为WebSocket.

客户端接受到服务端响应的HTTP/1.1 101 Switching Protocols\r\n后,便可以以WebSocket 协议发送消息了
需要注意的是:(图片)

联想截图_20230413221740.png

联想截图_20230413222015.png
网络安全

三要素:(完整性和身份验证相互关联)

机密性:攻击者无法获知通信内容
完整性:攻击者对内容进行篡改是能被发现(通信双方应有秘密信息)
身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信(需要有秘密信息,即根证书的公钥)
对称加密和非对称加密
对称加密:加密、解密用同样的密钥
非对称加密:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
密码散列函数(哈希函数)
输入:任意长度的内容
输出:固定长度的哈希值
性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的(从哈希值是不可能推出输入的)
数字签名(指纹)=私钥加密(哈希函数)
【在没有提前交换秘密信息的前提下,无法在不安全的信道交换信息】

HTTPS
把HTTP 的明文换成密文,再验证身份,即HTTPS

HTTPS=HTTP+TLS
TLS=身份验证+加解密
身份验证靠PKI

服务器身份验证靠PKI ,客户端身份验证靠HTTP协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值