计算机网络总结
2022-02-23 20:05:18 37 举报
AI智能生成
计算机网络知识点总结,面向面试,考试不够用。
作者其他创作
大纲/内容
广域网WAN
城域网MAN
局域网LAN
个人区域网PAN
范围
公用网
专用网
使用者
分类
速率
吞吐量
带宽
时延
时延带宽积
往返时间RTT
利用率
计算机网络性能指标
应用层
表示层
会话层
运输层
网络层
数据链路层
物理层
OSI七层协议
网际层
网络接口层
TCP/IP四层协议
DNS
HTTP
HTTPS
SMTP
举例协议
通过应用进程之间的交互来完成特定网络应用。应用层协议定义的是应用进程间通信和交互的规则。
面向连接的、可靠的数据传输服务
TCP
提供无连接的、尽最大努力的数据传输服务
UDP
主要协议
负责向两台主机中进程之间的通信提供通用的数据传输服务。
IP
负责为分组交换网上的不同主机提供通信服务
数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧
尽可能的屏蔽掉各种计算机的传输媒体和通信手段的差异
五层协议
分层
作用:屏蔽传输媒体和通信手段的差异
机械特性
电气特性
功能特性
过程特性
特性
连续信号
模拟信号
离散信号
数字信号
信号分类
单工通信
单向通信
半双工通信
双向交替通信
全双工通信
双向同时通信
信道
不归零制
归零制
曼彻斯特编码
差分曼彻斯特编码
编码
调幅
调频
调相
带通调制
双绞线
同轴电缆
光缆
子主题
传输媒体
数据单元:帧
封装成帧
透明传输
循环冗余检验CRC
差错检测
点对点协议PPP
点对点信道
CSMA/CD协议
广播信道
网络层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务
版本4位
首部长度4位
区分服务8位
总长度16位
标识16位
标志3位
片位移13位
生存时间8位
协议8位
首部校验和16位
源地址32位
目的地址32位
首部(固定20字节)
数据
格式
IP地址32位
IP地址=网络号+主机号
网络号8位主机号24位 0——
A类
网络号16位主机号16位 10——
B类
网络号24位主机号8位 110——
C类
1110——多播地址
D类
1111——保留使用
E类
分类IP地址
IP地址=网络号+子网号+主机号,从网络的主机号借用若干位作为子网号
子网划分
超网
三个阶段
网际协议IP
根据IP地址解析出相应的硬件地址
在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个表经常动态更新
首先在ARP高速缓存中查找,如果查不到,就在局域网上广播发送一个ARP请求分组
本局域网上所有主机上运行的ARP进程都收到此分组请求
目标主机收下ARP请求分组,并向主机发送ARP响应分组
收到响应分组后就在ARP告诉缓存中写入更新
tip:ARP协议解决的是同一个局域网中的问题
过程
地址解析协议ARP
ICMP差错报告报文
ICMP询问报文
网际控制报文协议ICMP
网际组管理协议IGMP
内部网关协议IGP
外部网关协议EGP
内部网关协议RIP
内部网关协议OSPF
外部网关协议BGP
路由选择协议
使用TCP之前必须建立连接,传输完之后必须释放连接
面向连接
每条TCP连接只能一对一
点对点交互通信
无差错、不丢失、不重复且按序到达
提供可靠交付
双方应用程序在任何时候都能发送数据
TCP不知道所传送的字节流的含义
面向字节流
特点
TCP连接的端口,由IP地址:端口号定义
Socket是什么
源端口和目的端口
表示本报文中所发送的数据的第一个字节的序号
序号
期望收到对方下一个报文段的第一个数据字节的序号
若确认号=N,表面到序号N-1位置的所有数据都已正确收到
确认号
数据偏移
保留
紧急URG
当ACK=1时,确认号字段才有效,当ACK=0时,确认号无效。TCP规定,在建立连接后所有传送的报文段都必须把ACK置1
确认ACK
推送PSH
复位RST
同步SYN
FIN=1时,表明该报文段的发送方数据发送完毕,要求释放运输连接
终止FIN
窗口
检验和
紧急指针
选项
TCP报文段首部格式
以字节为单位的滑动窗口
超时重传机制
选择确认SACK
TCP如何实现可靠传输
流量控制
对资源的需求超过了资源所能提供的可用部分
拥塞定义
防止过多的数据注入到网络中,防止路由或链路过载
拥塞控制定义
PS:拥塞控制是全局性的过程,而流量控制属于端对端的
总之就是一直乘以2
由小到大逐渐增大拥塞窗口数值
慢开始
每一个往返时间RTT,窗口+1
到达慢开始门限就开始线性增长
拥塞避免
超时了门限会变成当前窗口的一半,窗口会重新从1开始
当发送方连续收到3个队同一报文段的确认ACK,说明发生了丢失问题。可以立刻进行重传,避免超时。
快重传
慢开始门限变为当前窗口的一半,拥塞窗口变成当前门限,然后开始线性增加
快恢复
TCP拥塞控制方法
拥塞控制
1、客户端发送请求连接报文,其中首部同步位SYN=1,同时选择一个序号seq=x。TCP规定,SYN报文段=1的不能携带数据,但要消耗掉一个序号。此时客户端进行SYN-SENT状态
2、服务机接收到报文段,若同意连接,发送确认报文段。其中SYN、ACK都为1,并且确认号ack=x+1,同时也为自己选择一个属实序号seq=y。此时服务机进入SYN-RCVD状态
3、客户端接受到确认信号,向主机发送确认。其中ACK=1、确认号ack=y+1,而自己的序号seq=x+1。TCP规定,确认报文段可以携带数据。但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍是seq=x+1。此时连接已经建立,客户端进入ESTABLISHEND状态,主机收到后也进入该状态。
防止已失效的连接请求报文段突然传送到服务机,产生错误,导致资源浪费。
A发出请求报文没有丢失,但是滞留了,在连接释放后的某个时间间才到达B。B收到这个就认为A重新发起了连接请求,于是就发送给A发送确认,建立连接。假定没有第三次握手,在B发出这个确认报文后,连接就建立了,但是A实际并没有发起请求,所以不会理会B的确认,这就导致B的连接一直无意义的建立。
举例
问题:为什么要三次握手?两次可以吗?
TCP三次握手建立连接
1、进程A向进程B发送连接释放报文段,其中首部终止控制位FIN=1,序号seq=u,然后进入FIN-WAIT-1状态
2、进程B收到连接释放报文后发出确认报文,其中确认号ack=u+1,序号seq=v,然后B进入CLOSE-WAIT状态,A收到确认号进入FIN-WAIT-2状态,此时连接进入半关闭状态
3、若B没有要发送的数据时,B向A发出连接释放报文段,其中FIN=1,确认号ack=u+1,然后B进入LAST-ACK状态
4、A收到连接释放报文后,发出确认,其中ACK=1,然后进入TIME-WAIT状态,此时连接并没有释放掉,需要等待2MSL后才释放。
1、在第四次挥手
2、2MSL, 四分钟
3、保证最后一个ACK报文能够到达
4、防止已经失效的连接请求报文出现在本次连接中,导致资源浪费
问题:TIME-WAIT在哪个阶段?实际为多长?为什么?
TCP四次挥手释放连接
传输控制协议TCP
发送数据之前不用建立连接,减少了开销和时延
无连接
不保证可靠交付
尽最大努力交付
应用层交给UDP多长的报文,UDP就照发
面向报文
无拥塞控制
支持一对一、一对多、多对多、多对一的交互通信
只有8个字节比TCP20个字节要短
首部开销小
源端口
目的端口
长度
校验和
首部格式(注意没个字段都是两个字节)
用户数据报协议UDP
FTP
TELNET
URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL
统一资源标识符
URI
协议://主机:端口:/路径
用于标志or定位在整个互联网范围内的某一资源
统一资源定位符
URL
虽然建立了TCP连接,但是双方在交换HTTP报文之前不需要建立HTTP连接
无连接的
服务器并不记得曾经访问过的客户,也不记得为客户曾经服务过多少次。
无状态的
每请求一个资源都要有两边RTT时间开销
短连接
每一次建立新的TCP连接都要分配缓存和变量
缺点
HTTP1.0
使用了持续连接(长连接),服务器在发送响应后扔在一段时间内保持这条连接
相较HTTP1.0
客户在收到响应前就能够接着发送新的请求,效率高
流水线式
客户在收到前一个响应后才能发出下一个请求,效率不好,浪费服务器资源
非流水线式
持续连接的工作方式
HTTP1.1
二进制分帧
首部压缩
多路复用
请求优先级
服务器推送
总之HTTP2.0肯定比之前的好
HTTP2.0
使用明文进行通信,内容可能会被窃听
不验证通信方的身份,通信方的身份有可能遭遇伪装
无法证明报文的完整性,报文有可能遭篡改
HTTP存在的安全问题
HTTPS=HTTP+加密+认证+完整性保护
解决安全问题引入的HTTPS,HTTPS不是新协议,只是对HTTP进行加密
对称性加密
非对称性加密
PS:HTTPS使用混合加密的方式,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率
加密方式
1、客户端发起HTTPS连接
2、服务器发送公钥和证书到客户端
验证证书
生成随机数
用公钥对随机数加密
3、客户端验证服务器发送的证书
4、服务器接受加密的随机数,用私钥进行解密,随后用这个随机数当做私钥对需要发送的数据进行对称加密
5、客户端在接受到加密后的数据使用私钥对数据进行解密并且解析数据呈现结果给用户
6、连接建立
HTTPS连接过程
要钱
加密解密需要时间开销
HTTPS的缺点
包含请求的方法、URL、版本
请求行
说明浏览器、服务器或报文主体的一些信息
首部行
请求的实体数据
请求体
请求报文
版本、状态码、短语
状态行
响应的实体数据
响应体
响应报文
HTTP报文格式
get
put
post
delete
trace
connect
head
option
GET 用于获取资源,而 POST 用于传输实体主体
作用
GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在实体主体中。不能因为 POST 参数存储在实体主体中就认为它的安全性更高,因为照样可以通过一些抓包工具(Fiddler)查看
因为 URL 只支持 ASCII 码,因此 GET 的参数中如果存在中文等字符就需要先进行编码
参数
GET 方法是安全的,而 POST 却不是,因为 POST 的目的是传送实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也就发生了改变。
安全
幂等的 HTTP 方法,同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)
在正确实现的条件下,GET,HEAD,PUT 和 DELETE 等方法都是幂等的,而 POST 方法不是
幂等性
请求报文的 HTTP 方法本身是可缓存的,包括 GET 和 HEAD,但是 PUT 和 DELETE 不可缓存,POST 在多数情况下不可缓存的
缓存
拓展:get和post的比较
请求方法
表示通知信息
1XX
200 ok
204 请求已经成功处理,但是返回的响应报文不包含实体的主体部分
206 表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容
表示成功
2XX
301 永久重定向
302 临时重定向
303 和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源
304 条件不满足
表示重定向
3XX
400 报文语法错误
401 认证失败
403 拒绝
404 懂的都懂
表示客户端错误
4XX
500 一般情况下 都是代码出现了问题
503 服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
表示服务器错误
5XX
拓展:转发和重定向的区别
状态码
HTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务。HTTP/1.1 引入 Cookie 来保存状态信息
为什么要有cookie
Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带上,用于告知服务端两个请求是否来自同一浏览器。由于之后每次请求都会需要携带 Cookie 数据,因此会带来额外的性能开销(尤其是在移动环境下)
cookie是什么
会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
浏览器行为跟踪(如跟踪分析用户行为等)
个性化设置(如用户自定义设置、主题等)
用途
浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效
会话期cookie
指定一个特定的过期时间(Expires)或有效期(max-age)之后就成为了持久性的 Cookie
持久型cookie
cookie
除了可以将用户信息通过 Cookie 存储在用户浏览器中,也可以利用 Session 存储在服务器端,存储在服务器端的信息更加安全
session
cookie存储客户端,session存储在服务器
1、存储位置
cookie以文件的形式存储,session以类似HashMap的结构存储在服务器
2、存储方式
Cookie 只能存储 ASCII 码字符串,而 Session 则可以存取任何类型的数据
cookie存储上线为4kb,session没有限制
3、存储容量
cookie不安全
session相对安全(对网络抓包可以抓到)
4、安全性
cookie存储在客户端,不会影响服务器性能
session存储在服务器,会影响服务器性能
5、性能
比较
因此在考虑数据复杂性时首选 Session
Cookie 存储在浏览器中,容易被恶意查看。如果非要将一些隐私数据存在 Cookie 中,可以将 Cookie 值进行加密,然后在服务器进行解密
选择
cookie和session的比较和选择
WWW
1、DNS域名解析
建立TCP连接
发生HTTP请求
服务器处理请求
服务器返回HTTP响应
关闭TCP连接
2、请求和响应数据
解析
渲染
3、浏览器加载渲染
其他问题:从网页上数据一个URL到产生渲染效果,其中发生了什么
自下而上
计算机网络
0 条评论
回复 删除
下一页