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