计算机网络基础(OSI&TCP/IP模型、端口、TCP/UDP、HTTP/HTTPS、访问一个网站的过程)

计算机网络

OSI网络模型&TCP/IP模型

一、分层模型

在这里插入图片描述

二、每层作用

1. 物理层

物理层确保原始的数据可在各种物理媒体上传输,(网线、光纤、空气等)

2. 数据链路层

数据链路层为网络层提供可靠的数据传输,传输单位为

3. 网络层

实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。
包含的协议:地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。

4. 传输层

传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;

5. 会话层

会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

6. 表示层

表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

7. 应用层

为操作系统或网络应用程序提供访问网络服务的接口,如文件传输、文件管理以及电子邮件的信息处理。
FTP(文件传送协议)、Telnet(远程登录协议)、SSH(安全外壳协议:22端口)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

三、端口

在这里插入图片描述

四、TCP(传输控制协议)、UDP(用户数据报协议)

  1. 区别:
  • TCP面向有连接,UDP面向无连接
  • TCP面向字节流,UDP面向报文
  • TCP可靠稳定(建立在三次握手)有序,UDP不可靠不稳定无顺序
  • TCP慢,效率低,占用系统资源高,易被攻击;UDP快(没有TCP握手,确认,窗口,重传,拥塞 控制),比TCP稍安全 。
  1. 三次握手
    在这里插入图片描述
  • 原理:
    1)发送端建立TCP连接的请求报文,带有SYN(synchronize)标志的数据包给接收方,表示我要建立连接,syn段置为1,其中包含seq序列号(随机生成);
    2)接收方接收后,由syn标志判断该客户端要建立连接,接收方会回复一个报文,带有SYN/ACK标志的数据包传递确认信息,包含ack(验证字段) = 发送端的序列号加1,接收方随机生成的序列号seq;
    3)最后,发送方再回传一个带有ACK标志的数据包,表示’握手‘结束,其中包含seq:将原有的序列号加1,ack:将服务端的序列号加1,确认成功建立连接。

通俗:
客户端:服务端你好,能听到吗?
服务端:我听到了,你能听到我的吗?
客户端:可以听到,我们互相都能听到对方的话,我们的通信可以开始了。

  • 为什么三次?
    四次握手:浪费资源,降低连接的速度与效率;
    两次握手:只有客户端的起始序列号能被确认, 服务端选择的序列号则得不到确认;
  1. 四次挥手(连接终止协议)
    在这里插入图片描述
  • 原理:
    1)第一次挥手:Client发送一个FIN,包含随机生成的序列号seq,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
    2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1,Server进入CLOSE_WAIT状态。
    3)第三次挥手:Server发送一个FIN,包含随机生成的序列号seq和确认序列号ack,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
    4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手
  • 通俗:
    1)客户端:我所有东西都说完了;
    2)服务端:我已经全部听到了,但是等等我,我还没说完;
    3)服务端:好了,我已经说完了;
    4)客户端:好的,那我们的通信结束。
  • 四次挥手等待时间为什么是2MSL?
    MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。
    为了保证客户端最后一次挥手的报文能够到达服务器,如果第四次挥手的报文段丢失了,服务器会超时重传这个第三次挥手的报文段,所以客户端不是直接进入CLOSED,而是要保持TIME_WAIT(等待2MSL就是TIME_WAIT)就起到作用了,当再次收到服务器的超时重传的断开连接的第三次挥手的请求的时候,客户端会继续给服务器发送一个第四次挥手的报文,能够保证对方(服务器)收到客户端的回应报文,最后客户端和服务器正确的关闭连接。
  • 为什么是四次?
    因为TCP是一个全双工协议,必须单独拆除每一条信道。4次挥手的目的是终止数据传输,并回收资源,此时两个端点两个方向的序列号已经没有了任何关系,必须等待两方向都没有数据传输时才能拆除虚链路,不像初始化时那么简单,发现SYN标志就初始化一个序列号并确认SYN的序列号。因此必须单独分别在一个方向上终止该方向的数据传输。
  • 如果是三次挥手,会怎么样?
    三次的话,被动关闭端在收到FIN消息之后,需要同时回复ACK和Server端的FIN消息。如果Server端在该连接上面并没有Pending的消息要处理,那么是可以的,如果Server端还需要等待一段时间才可以关闭另外一个方向的连接,那么这样的三次挥手就不能满足条件。

五、Http协议

  1. TCP协议对应于传输层,而HTTP协议对应于应用层,Http协议是建立在TCP协议基础之上的。
  2. http请求
    GET 请求获取Request-URI所标识的资源
    POST 在Request-URI所标识的资源后附加新的数据
    HEAD 请求获取由Request-URI所标识的资源的响应消息报头
    PUT 请求服务器存储一个资源,并用Request-URI作为其标识
    DELETE 请求服务器删除Request-URI所标识的资源
    TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
    CONNECT 保留将来使用
    OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
  3. GET和POST的区别
  • GET用于信息获取,具有幂等性(对同一个url的多个请求应该返回同样的结果),POST可能修改 服务器上的资源
  • GET请求的数据放到url后面,POST放到包体
  • POST安全性比GET高
  • GET对传入数据的长度有限制(浏览器及服务器对他的限制),POST没有限制
  • GET能被缓存,参数历史可以保存在浏览器中,POST不能被缓存,参数不会保存在浏览器历史中
  1. 描述一次HTTP请求到返回的过程
  • 对url进行DNS解析过程 (域名与 IP 地址的相互转换)
    查找浏览器的DNS缓存 --> 查找操作系统DNS缓存中 --> 查找本地DNS服务器 --> 本地DNS服务器向根DNS服务器发起请求,返回COM顶级域名服务器 --> 本地DNS服务器向COM顶级域名服务器发起请求,返回baidu.com域名服务器 --> 本地DNS服务器向baidu.com域名服务器发起请求,返回IP地址
  • 根据IP找到对应的服务器,三次握手建立连接
  • 建立TCP连接后发起HTTP请求
  • 服务器响应HTTP请求,给浏览器返回html代码
  • 浏览器解析html代码,并请求html代码中的资源(如js、css图片等)
  • 浏览器进行页面渲染呈现给用户
  1. HTTP状态码
    1XX:临时响应,代表请求已被接受,需要继续处理
    2XX:请求成功
    3XX:重定向
    4XX:客户端错误:403(服务器拒绝请求),404(服务器找不到请求的页面),405(禁用请求中指 定的方法)
    5XX:服务器错误:502(服务器作为网关或代理出现错误),504(网关或代理服务器,未及时获取请求)

六、HTTPS协议

HTTPS协议可以理解为HTTP协议的升级,就是在HTTP的基础上增加了数据加密。在数据进行传输之前,对数据进行加密,然后再发送到服务器。这样,就算数据被第三者所截获,但是由于数据是加密的,所以你的个人信息让然是安全的。这就是HTTP和HTTPS的最大区别。

  • HTTPS原理简述

https整体过程分为:证书验证(非对称加密)和数据传输(对称加密)阶段。

在这里插入图片描述

  • 证书验证阶段
    浏览器发起HTTPS请求
    服务端返回HTTPS证书
    客户端验证证书是否合法,如果不合法则提示告警
  • 数据传输阶段
  1. 当证书验证合后,在本地生成随机数
  2. 通过公钥加密随机数,并把加密后的随机数传输到服务端
  3. 服务端通过私钥对随机数进行解密
  4. 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输
  • 为什么数据传输是用对称加密?
    首先,非对称加密的加解密效率是非常低的,而http的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的;
    另外,在HTTPS的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以HTTPS中内容传输加密采取的是对称加密,而不是非对称加密。

七、访问一个网站的完整过程

  1. 利用DNS协议进行域名解析
    输入网址,系统查询本地host文件和DNS缓存信息,查看网址对应的IP解析记录,如果有就可以直接获得IP地址,第一次请求时,都是没有记录的,系统会交给客户端本地设置的DNS服务器地址解析(此DNS为LDNS,即Local DNS),DNS查询分为:递归查询和迭代查询,最终将IP解析记录发给LDNS;
  2. 获得IP地址后,建立tcp协议三次握手;
  3. 客户端发出访问网站相应页面请求(发出http协议请求报文);
  4. 服务端发出相应访问页面的请求信息(发出http);
  5. 断开tcp协议四次挥手过程
  • 递归查询
    主机向本地域名服务器的查询一般都是采用递归查询。
    所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。 因此,递归查询返回的查询结果是所要查询的IP地址或者是报错,表示无法查询到所需的IP地址。
  • 迭代查询
    本地域名服务器向根域名服务器的查询一般都是采用迭代查询。
    迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值