当前位置: 首页 > news >正文

计算机网络:认证和授权 DNS 域名解析过程(如何转换为ip地址) http无状态 5**服务端错误相关的响应状态码 tcp某次握手丢失会有什么现象?

目录

认证和授权

Token和JWT的区别

 DNS 域名解析(如何转换为ip地址)

socket是什么?

什么是TCP/IP协议?

TCP如何保证可靠性?

http无状态

5**服务端错误相关的响应状态码

tcp某次握手丢失会有什么现象?


认证和授权

认证:用户名密码登录,二维码登录,手机短信登录,指纹,刷脸

Token和JWT的区别

服务器是如何区分用户的?

浏览器登录将用户名和密码发送到服务器 服务器收到知道是哪个用户发送的请求

之后客户端的请求如果都带上密码是比较危险的,客户端携带容易导致密码的泄漏;

所以通常是由服务器返回标记信息:

浏览器收到之后,将信息保存,以后的每次请求都会携带 服务器就可以区分,实现了记住登录状态,这个就是cookie;

注意Cookie的保存跟发送是由浏览器自动实现的,不需要网页代码额外处理

此时的cookie是有问题的,因为数据里面只有id和名字,很有可能被恶意猜到,悄悄向服务器请求,拿到同样的权限

如何让cookie防止被篡改呢?数据签名!!!

取哈希作为签名,签名随同数据一并发给浏览器作为Cookie

这样后面的请求服务器就可以通过验证签名来判断数据是否合法

而恶意攻击的人不知道服务器的密令

所以很难伪造签名

有时候我们不想让浏览器Cookie保存太多数据,那么还可以把数据保存在服务端,并生成一个足够长的随机Key用于与数据关联

然后把Key返回给浏览器写入Cookie

这样在下次请求时,服务器就可以根据Key查找出保存在服务器的内容,这个过程就叫Session,而Key则是SessionID

 DNS 域名解析(如何转换为ip地址)

是通过权威域名服务器进行的--可以吧域名服务器当做成一张表,记录每个url对应的ip地址

如何访问域名服务器?顶级域名服务器知道!!!

如何访问顶级域名服务器呢??根域名服务器知道

我们在浏览器输入www.baidu.com之后,浏览器先会检查缓存和本地的host文件,查询有没有域名所对应的ip地址,如果有就直接使用

如果没有,dns客户端会向dns服务器发送请求

本地的dns服务器收到请求,会先查看自己的缓存记录,如果有,就直接返回;

如果没有,会向根域名服务器发送请求,根域名服务器返回顶级域名服务器的地址,找到顶级返回权威域名服务器的ip地址

最后把ip返回给我们的主机

socket是什么?

如图,Socket是基于应用层与TCP/IP协议族之间的一个抽象,他将TCP/IP协议里面复杂的通信逻辑进行封装,对用户来说,只要通过一组简单的API就可以实现网络的连接和通信。

Socket的通信过程如下图,首先,服务端初始化ServerSocket,然后对指定的端口进行绑定,接着对端口及进行监听,通过调用accept方法阻塞,此时,如果客户端有一个socket连接到服务端,那么服务端通过监听和accept方法可以与客户端进行连接。

什么是TCP/IP协议?

 如果遇到一个比较大的文件,就需要分开传输

拆分分别大包发送

Ip地址是ip协议提供的一种统一的地址格式

ip地址是逻辑上的地址 代表不了物理最终的地址

ip地址就是最终的发送地址

ip协议就是数据传输的路径

Tcp(传输控制协议)是一种面向连接、可靠的基于字节流的传输层协议

tcp类似于分解包的过程

ip地址相当于给包裹添加标签:原来的和目标的地址 在数据上封装一层

送到目的地址 目的地址查看数据的显示

路由器是工作在ip协议层的

路由器,是连接互联网各局域网、广域网的设备,他会根据信道的情况自动选择和设置路由以最佳路径,按前后顺序发送数据

tcp协议需要保证数据的完整性

TCP可以看成是一种字节流,它会处理IP层或以下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在TCP头部。

tcp确保数据的完整性,并且使得重复的数据被丢弃掉

TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接。采用4次挥手来关闭一个连接。

所以通常tcp的传输是比较慢的

TCP如何保证可靠性?

(1)重传机制 (2)滑动窗口(3)流量控制(4)拥塞控制

(1)重传机制解决数据丢失的问题

实现方法:序列号 确认应答--定时器

重传的策略:(1)超时重传 如果规定时间内没有回包,那么就进行重传--启动定时器

(2)快速重传:超时之前收到三个相同的数据包确认,直接重传去失的数据

到底是重传一个还是重传所有的呢?

就出现了SACK(能够确认是重传什么,保证只去重传丢失的数据)

DSACK(重复选择确认,把重复收到的包通过sack告知发送方)

服务器返回的ack是不会进行重传的,只会发送一次,其他的fin包会多次发送

DSACK解决了对于发送方的问题:确定是传递的数据包丢失了,还是返回的ack丢失了,还会解决网络超时的问题

滑动窗口解决返回多次的ack的问题,不用对每一个ack去应答,否则网络的吞吐量就太低了

窗口:没有应答的情况下,发送方可以发送多少数

http无状态

5**服务端错误相关的响应状态码

 5**范围的状态码,表示服务器未能正常处理客户端的请求而出现意外错误。

500表示是服务器的问题,但是具体是什么问题没有描述

501:例如有的服务器不支持post请求,就无法理解这个请求,服务器不支持该请求方法

503:遇到服务器正在处于系统维护,无法处理请求

tcp某次握手丢失会有什么现象?

1,如果第一个包,即A发给B的SYN中途被丢,没有到达B,会怎么办?

第一个包,即A发给B的SYN中途被丢,没有到达B:A会周期性超时重传,直到收到B的确认

2,如果第二个包,即B发给A的SYN+ACK中途被丢,没有到达A,会怎么办?

第二个包,即B发给A的SYN+ACK中途被丢,没有到达A:B会周期性超时重传,直到收到A的确认
3,如果第3步,A发给B的确认ACK丢了,该怎么办?A会重传这个ACK吗? 

第三个包,即A发给B的ACK中途被丢,没有到达B
A发完ACK,单方面认为TCP为Established状态,而B显然认为TCP为Active状态:

a.假定此时双方都没有数据发送,B会周期性超时重传,直到收到A的确认,收到之后B的TCP连接也为Established状态,双向才可以发包,才算是建立连接;
b.假定此时A有数据发送,B收到A的Data+ACK,自然会切换为established状态,并接受A的
Data。
C.假定B有数据发送,数据发送不了,会一直周期性超时重传SYN+ACK,直到收到A的确认才可
以发送数据。

相关文章:

  • WPP 媒体推出基于人工智能的工具突破基于身份识别的定向模式
  • 摄影入门:相机基本参数解析
  • SpringBoot学习day2-前后端的交互搭建以及跨域问题、拦截过滤器问题的解决
  • FEMFAT许可使用数据分析工具介绍
  • Jetson NX 从nvme恢复的emmc启动的方法
  • 华为交换机远程登录配置
  • 从C学C++(2)
  • uni-app项目实战笔记1--创建项目和实现首页轮播图功能
  • Visual Stdio程序弹出的黑框内容如何复制
  • ElasticJob初探
  • 6.11 note
  • ImportError: cannot import name ‘PfeifferConfig‘ from ‘transformers‘【已解决】
  • 再说一说LangChain Runnable接口
  • 酒店管理系统开发:量身定制,助力酒店高效管理与服务升级
  • uniapp uni.createAnimation为文件交换位置动画效果
  • Uniapp实现多选下拉框
  • Linux C学习路线全概括及知识点笔记3-网络编程
  • uniapp音乐播放createInnerAudioContext
  • # include<heαd.h>和# include″heαd.h″的区别
  • Argocd 运维与最佳实践
  • 微信公众平台注册方法/郑州seo公司哪家好
  • 关于网站建设的期刊文献/网站友情链接美化代码
  • 降龙网络专业做网站/营销培训方案
  • 温州网站关键词排名/网站建设营销推广
  • 罗湖做网站哪家好/百度竞价有点击无转化
  • 毕设网站开发什么题目好/网站综合查询工具