Profile image
计算机网络

计算机网络

Sat Jul 06 2024
Guide

当在地址栏输入URL并且查询会发生什么

1、当输入URL后,浏览器会解析输入的url的主机端,口号,协议,并且构造一个http请求,如果http有缓存,则使用缓存资源,否则向服务器发送请求获取资源
2.DNS解析,DNS服务器会将URL解析,返回URL所对应的IP地址,返回浏览器解析
3.TCP三次握手,客户端和服务端通过三次握手获取连接
4.客户端发送http/https请求到服务器
5.服务器处理请求并且返回报文
6.浏览器渲染浏览器页面
7.TCP四次挥手断开连接

DNS

DNS是一种将域名转化为Ip的分布式服务器,设计DNS服务器采用分布式需要注意以下几个问题:
1.单点故障:如果DNS服务器崩溃了,通信容量就会很多,单个服务器不得不处理所有的请求,一台服务器很难满足
2.远距离集中式服务器:DNS服务器不可能邻近所有的用户,距离太远会造成严重的时延
3.维护成本巨大

DNS解析过程

1.首先查询浏览器缓存中是否有对应的IP地址
2.如果浏览器缓存中没有的话就会从Host文件中去查询
3.如果Host文件中也没有的话,就会像本地的DNS服务器发送请求
4.如果本地DNS服务器中有该ip地址,则返回。如果没有则向根DNS服务器发起请求,根服务器返回需要查询的顶级域名服务器
5.本地服务器向顶级域名服务器发送请求,顶级服务器返回需要查询权威DNS服务器
6.最后本地DNS解析器向权威服务器发送请求,返回域名的ip地址
7.本地DNS解析器将IP地址返回给浏览器,并且存储在本地浏览器中,方便下次访问
8.浏览器向IP地址发起连接

DNS的解析方式

1.递归查询:本地DNS解析器,向上层服务器发送请求,返回的时完整的查询结果,例如:本地DNS解析服务器->根服务器->顶级服务器->权威服务器->顶级服务器->根服务器->本地DNS解析服务器
2.迭代查询:本地DNS服务器向根服务器发送请求,根服务器返回顶级服务器到本地DNS解析服务器,本地DNS服务器再向顶级服务器发送请求,返回权威域名服务器,诸如此类

注意:递归查询适合用户和客户端,迭代查询适合DNS服务器之间的通信

Http特性与简述

  1. 简述:
    (1).客户端发送http请求
    (2).服务端做出响应处理后,返回http响应报文
  2. www构建技术:
    (1).HTML:超文本语言
    (2).HTTP:文档传输协议
    (3).URL:指定的传输地址
  3. HTTP版本:
    (1)HTTP/1.0-1996.5
    (2)HTTP/1.1-1997.1
    (3)HTTP/2.0正在制订中
  4. 特性
    (1)简单:基本报文形式为header+body,头部信息也采用key-value的简单文本形式
    (2)灵活和易于扩展
    ·HTTP协议里的各种请求方法,URL/URI,状态码,头文段每个部分都不是固定死的,允许开发人员自定义和扩展
    ·HTTP在应用层,下层可以随意切换
    ·HTTPS在在HTTP与TCP之间增加了SSL/TSL安全传输层
    (3)无状态,明文传输,不安全
    无状态:
    服务器不会去记忆http的状态,也不需要额外的资源来记录信息,这样可以减轻服务器的负担,但是在完成服务器与客户端之间的关联性的操作时会很麻烦(可以使用Cookie技术:在请求和响应报文中写入Cookie信息来控制客户端的状态,这样的话服务端就可以观测到客户端的状态)
    明文传输:
    传输过程中的信息是透明的,这样虽然可以方便阅读,但是给信息安全造成了极大的隐患
    不安全:
    1.使用明文,内容容易被窃听
    2.不验证对方的身份,很可能遭到伪装
    3.无法验证报文的完整性,可能遭到篡改
    (可以通过HTTPS的方式解决,通过引入SSL/TLS,增强安全性)
  5. HTTP各版本的特点
    1.HTTP/1.0
    是第一个正式的版本
    (1)引入了请求头和响应头,支持多种请求方法和状态码
    (2)不支持长久连接,每次发送请求都需要建立新的连接
    2.HTTP/1.1
    (1)引入了长连接
    在连接断开时可以发送很多个请求,不需要每次请求都请求新的连接。
    (2)管道网络传输
    在服务端响应之前也可以发送请求,不需要等待响应
    (3)队头阻塞
    如果在发送在服务器的请求队列中,位于前面的请求阻塞了,后面的队列会等带请求阻塞完之后才会出来之后的请求,换句话说,服务器时严格按照顺序处理请求的
    3.HTTP/2.0
    HTTP2协议是基于HTTPS的,所以HTTP的安全性是有保障的
    (1)头部压缩:
    HTTP/2使用HPACK压缩算法对请求和响应头进行压缩,减少了传输的头部数据量,降低延迟。
    (2)二进制帧:
    HTTP/2将数据分割成二进制进行传输,分为头信息帧(Header Frame)和数据信息帧(Data Frame)
    (3)并发传输
    引用了Stream的概念,多个Steam复用在TCP连接,针对不同的Http请求使用不同的StreamID来区分,接收端可以通过StreamID有序组装HTTP消息,不同的Stream帧是可以乱序发送的,因此可以并发不同的Stream,也就是并行交错地发送请求和响应
    (4).服务器推送:
    在HTTP2中,服务器可以向客户端一个请求发送多个响应,服务端可以额外的向客户端推送请求之外的资源,无需客户端明确请求资源

HTTPS和HTTP的区别

1.http是通过明文的方式在网络中传输的,https解决了http不安全的缺陷,在TCP和HTTP之间加入了SSL/TLS安全协议,使得报文可以加密传输
2.HTTPS在TCP三次握手之后,还需要进行SSL/TLS的握手过程,才可以进行加密传输
3.HTTP的端口号是80,HTTPS的端口号是443
4.HTTPS协议需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可靠的

对称加密

对称加密可以称之为私钥加密,使用相同的密钥来进行加密和解密
1.在加密的过程中,明文数据通过特定的算法和密钥进行加密,生成密文数据,解密过程则是用相同的算法和密钥进行解密,恢复为铭文数据
2.由于加密和解密都使用相同的密钥,因此对称加密算法的速度通常很快,但密钥的安全性很高,如果密钥泄露,那么攻击者可以轻易的揭秘数据

非对称加密

1.非对称加密称之为公钥加密,使用一对不同但相关的密钥:公钥和私钥 2.公钥用于加密数据,私钥用于解密数据如果使用公钥加密数据,只有拥有响应私钥的人才能解密数据,如果使用私钥加密了数据,可以使用相应的公钥进行解密
3.除了加密和解密之外,非对称加密还用于【数字签名】,可以验证消息的来源和完整性

混合加密

HTTPS采用对称和非对称加密结合的混合加密方式,保证信息的机密性,解决了窃听的风险

  1. 通信建立前:采用非对称加密的方式交换【会话密钥】,后续不再使用非对称加密
  2. 通信过程中:采用对称加密的会话密钥,加密明文数据

TCP三次握手

TCP是面向连接的可靠传输协议,客户端与服务器之间通信首先要通过套接字(Socket)进行连接,通过三次握手进行连接
1.第一次连接:随机初始化序列号,client_isn,放入TCP首部序列号段,客户端SYN置为1,之后发送给服务端表示发起连接,之后客户端处于SYN——SENT状态
2.第二次连接:服务端接收客户端的SYN报文之后,会随机生成序列号server——isn放入TCP首部序列号段,【确认应答号】填入client——Isn+1,并且SYN和ACK都置为1,把SYN和ACK报文都发送给了客户端,表示服务端接受了请求,并希望建立连接
3.客户端收到服务端的报文之后又,还向服务端回应一个应答报文,把ACK置为1,确认应答号填入server——isn+1,最后发送报文到服务端,之后客户端处于ESTABLISHED状态,表示客户端已经准备好和服务端进行数据传输,服务端收到客户端的报文之后,已进入ESTABLISHED状态。
此时双方可以进行数据传输

TCP头部协议格式

1.源端口号和目的端口号:用于告诉主机,报文段来自哪里,传给哪个协议或者应用程序(16位+16位=32位,共占4个字节)
2.首部长度:表示TCP头部有多少个字节,最长60
3.窗口大小:接收窗口,告诉对方本端TCP缓冲区还有多少空间可以接受数据,用来做流量控制
4.标志字段:
ACK:用于知识确认应答号是否有效,1表示成功接收报文段的确认
RST:用于重置一个已经混乱的连接,或者拒绝一个无效的请求
SYN:用于请求建立一个连接
FIN:用于断开一个连接
5.检验和:接受方用于检验和检查该报文段是否出现差错(CRC算法),同UDP