计算机网络-----第三章 应用层

第三章 应用层


1. DNS系统

​ IP地址难以记忆,所以出现了域名来一对一的对IP地址进行映射.

​ 在发送一个请求时,我们输入的是域名,然后与一台或多台DNS服务器进行访问,DNS服务器会将域名转化为对应主机的IP地址返回回来.然后我们的主机在使用得到的IP地址进行访问.

2. HTTP协议

​ HTTP协议规定了浏览器如何向服务器请求资源和服务器如何向浏览器发送资源.

​ 服务器监听80端口,发现所有访问服务器的请求,一旦服务器监听到请求,并且成功建立连接,浏览器就可以发送HTTP请求报文,服务器接收到HTTP请求报文之后根据自身的逻辑准备资源,并将资源通过HTTP响应报文发送给客户端.最后释放TCP连接.

(1). HTTP的特点

  • 无状态:用一个客户两次访问服务器时服务器的HTTP响应是没有区别的.
    • 通过cookie使得HTTP请求可以记录信息,是记录在用户主机中的文本文件
  • 采用TCP协议作为传输层协议,但HTTP本身是无连接的

(2). HTTP报文结构

​ 分为请求报文和响应报文.

​ HTTP报文是面向文本的,因此报文中每一个字段都是ASCII码串

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RVxfu6iq-1575943499846)(http://benjaminlee.cn:8989/hello/images/1574517235838.png)]

1). 请求行

​ 方法就是该请求要对资源进行的操作

  • GET:用于获取服务器中的资源

  • POST:用于创建一个资源

  • PUT:用于修改一个资源

  • DELETE:用于删除一个资源

    ​ 版本是HTTP协议的版本

2). 首部字段

​ 首部行(请求头,响应头)

使用Key:value的方式保存数据:

  • 字符集:Accept-Charset
  • 正文的格式:Content-Type
  • .
  • .
  • .

响应报文中的状态码就是404,500,200那一堆东西:

  • 1xx:通知信息,如请求正在处理等
  • 2xx:请求成功
  • 3xx:重定向
  • 4xx:客户出现差错
  • 5xx:服务器出现差错
3). 正文

​ 这部分放置要传输的数据(买什么,买多少)

3. HTTP请求的发送

​ HTTP协议是基于TCP协议的,通过二进制流将数据传给对方时,在TCP层会按照TCP协议把二进制流变成一个一个报文发送给对方.

​ 每发送一个报文段,都需要对方回应一个确认号ack,保证这个确认号之前的数据全部收到了.

​ TCP在发送每一个报文的时候,都需要加上源地址,源端口号,目标地址和目标端口号,将这些信息放入IP头中,交给IP层进行传输.

​ IP层需要查看目标地址是否和自己在一个局域网中,如果在,就发送ARP协议来请求这个目标地址对应的MAC地址,将源MAC地址和目标MAC地址放入MAC头,发送出去.

网络层的ARP协议工作原理:

网络层的ARP协议完成了IP地址与物理地址的映射。

首先,每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。

当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址:如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。

此ARP请求数据包里包括源主机的IP地址、硬件地址、以及优酷目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

​ 如果不在一个局域网,需要将这个IP包发送到网关,先发送ARP协议请求网管的MAC地址,然后步骤和之前类似.

​ 一层一层的跳跃后,终于达到了目标地址的局域网,找到目标的MAC地址,然后发送出去.

​ 目标机器发现MAC地址符合,就将包收起来.发现IP地址符合,就拆包到TCP层.TCP层分发到指定端口后验证序列号,发现序号是不是当前需要的,如果是就返回一个ACK.如果不是,就丢弃包.

4. HTTP协议各个版本

参考博客:从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路

(1). HTTP 0.9

​ 最原始的HTTP协议,每一个请求都要经历TCP连接的建立和断开.

​ 只有一个GET方法.只能回复HTML格式的字符串.

(2). HTTP 1.0

​ 任何格式都可以发送了(文字,图像,视频,二进制)

​ 加入了POST和HEAD方法

​ 加入了请求头,描述元数据

(3). HTTP 1.1

​ 引入了持久连接,也就是TCP连接默认是不关闭的,可以被多个HTTP请求复用.客户端和服务端一段时间没有互动后才会主动断开连接.

​ 引入了管道机制,在同一个TCP连接里面,可以同时发送多个请求.但请求的回复还是按顺序回复的.

(4). HTTP 2

​ 二进制协议,在之前HTTP 1.1版本的头信息是文本(ASCII编码),数据体可以使文本也可以是二进制.而HTTP 2之后,头信息和数据体都是二进制的.统称为帧.

​ 客户端可以同时发送多个请求或者回应,而且不用按照顺序一一对应.也就是异步性.为了实现这个功能,HTTP 2为每个数据包添加了唯一的编号,用编号来唯一对应请求包和响应包.

​ 头信息压缩.一方面,头信息使用gzip等方式压缩后再发送,另一方面客户端和服务端都会维护一个存储了头信息的表,所有字段都对应一个索引号.每次只发送其中的索引号.

5. HTTPS协议

​ 基于HTTP协议,通过SSL或者TLS提供加密处理数据,验证身份以及数据完整性保护.

​ 内容加密:采用混合加密技术,中间者不能查看明文内容

​ 验证身份:通过证书认证客户端访问的是自己的服务器.

​ 保护数据完整性:防止传出的内容被中间人冒充或修改

(1). SSL建立连接过程

  1. C端向S端发送请求,连接到S端的443端口.发送的信息是随机值1和C端支持的加密算法.
  2. S端收到信息后进行响应,包括随机值2和匹配好的协商加密算法,这个加密算法是C端发过来所支持的算法的子集.
  3. S端发送给C端第二个响应,是数字证书,数字证书必须要有一整套.可以自己制作也可以向组织申请(自己制作的证书会在客户端弹出不安全提醒).一整套证书其实就是一对公钥和私钥.传送的证书是其中的公钥.
  4. C端解析证书,这个工作是由客户端的TLS完成的.
    1. 首先会验证公钥是否有效
    2. 如果没问题,那么生成一个随机值(预主密钥)
  5. C端验证证书通过后,通过随机值1,随机值2和预主密钥组装会话秘钥.然后通过证书的公钥加密会话秘钥
  6. 传送加密信息传输的是加密后的会话秘钥,让服务端通过解密得到随机值1,随机值2和预主密钥
  7. 服务端组装出会话秘钥,应与客户端的会话秘钥一致
  8. 客户端通过会话秘钥加密一条数据发送给服务端,验证是否能正常接收消息
  9. 服务端通过会话秘钥加密一条消息回传给客户端,如果都能正常接收,那么表名SSL层连接建立完成

(2) 对称加密与非对称加密

​ 对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即如何安全地将密钥发给对方;而非对称加密是指使用一对非对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

​ 由于非对称加密的方式不需要发送用来解密的私钥,所以可以保证安全性;但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值