计网学习

发布时间 2024-01-11 17:21:40作者: __Zed

OSI七层模型

  • 物理层 网线 比特流
  • 数据链路层 MAC网卡地址 帧
  • 网络层 IP地址 路由方式 包
  • 传输层 端到端TCP UDP TCP报文 UDP数据报
  • 会话层 不同应用程序间会话
  • 表示层 数据格式转换、压缩加密解密等
  • 应用层 web应用

好处:隔层之间独立,灵活性好,易于实现维护、能促进标准化工作
image

一次完整的http请求包括?

  1. 客户端建立与服务器的连接
  2. 客户端发送请求,包含请求头、请求行、请求体
  3. 服务端响应请求
  4. 客户端的浏览器根据响应做出相应渲染展示给我
  5. 断开连接

DNS是什么?

  • 是一种域名和ip地址互相转换的分布式数据库
  • 我们记 www.baidu.com 比较好记, 但是123.741.15.1就很难记
  • 解析DNS通常先从浏览器缓存、系统缓存、路由器缓存等解析,缓存里实在没有再用域名服务器解析,并把结果存到系统缓存里
  • 使用域名服务器解析,使用UDP协议,因为域名一般不超过512字节而且UDP快!!

DNS服务器的查询分为递归查询(局部dns服务器向根域名服务器一级一级往下查 我帮你找到答案) 迭代查询(你去问这个服务器吧)

http长短连接的区别

HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。

  • 短连接就是每次报文通讯就建立连接,通讯结束就关掉,对于服务器来说好管理,存在的链接都是有用的
  • 长连接就是每次传输后不会自动断开,一般会设定一个断开时间,一般在web服务器侧定义
  • http1.0默认短连接 1.1后默认长连接

粘包拆包问题

粘包拆包问题在数据链路层、网络层以及传输层都有可能发生。日常的网络应用开发大都在传输层进行,由于UDP有消息保护边界,不会发生粘包拆包问题,因此粘包拆包问题只发生在TCP协议中。

  • 粘包发生的原因:发送端Nagle 算法造成可能粘包 客户端收的比来的慢造成粘包
  • 拆包发生的原因:客户端接收缓存区太小、一次发送的数据大于报文所能承受的最大值(MSS)
  • 解决方案:用标识符分割、设定合理的消息长度(不足补0等)、数据包中增加头部信息维护消息长度

HTTP的请求方法

  1. get 获取资源
  2. post 提交表单或上传资源
  3. put 上传资源以替换某内容
  4. head 仅获取请求头,比如检查这个资源是什么格式
  5. delete 删除指定资源
  6. trace 返回请求信息,用于诊断
  7. options 列出所有支持的方法
  8. patch 部分更新资源,put的补充
  9. connect 通过代理服务器建立连接

get获取数据,暴露在url上,以?分割url和数据,以&分割参数,最大2k且不安全,而且一次TCP全部发送出去,会被主动缓存
post修改或上传数据,存在于html的body里,安全,理论上无长度限制,两次TCP先发请求头响应100再发数据,默认不会被缓存
get 是幂等的(对同一url的多次请求得到的回复都是一样的)因为他不会改变资源,而post不是幂等的,所以不能用get增删改查

  • get写法可以自定义,不一定非要? &分割,只要服务器能识别就行,长度也不是http协议限制的,一般是服务器或浏览器限制

TCP与HTTP对应关系

  1. 一个tcp连接可以建立多个http
  2. http/1.1 不能在一个tcp上同时运行多个http请求(有个pipelining技术但是淘汰了)
  3. http/2 以上支持一个tcp同时发送多个http请求(multiplexing技术)
  4. 可能有的浏览器不支持http/2以上的协议,那就只能同时建立多个tcp连接实现并行传输了,chrome最大支持六个tcp连接

DNS负载均衡策略

一个域名可以对应多个ip地址

  • 在很多用户同时访问一个ip地址时,服务器会不堪重负,dns服务器就通过一些策略把域名解析为不同的ip地址,这个可能以不同地理位置展示不同内容....

  • 策略有:轮循,权重轮循,响应时间均衡策略等

SSL的工作流程

总结一句话就是:使用非对称加密传递密钥,使用这个密钥对通讯信息对称加密

  1. 客户端建立ssl连接请求
  2. 服务端把数字证书(包含公钥A)发送给客户端验证
  3. 客户端验证通过
  4. 客户端使用这个公钥A加密另一个对话
  5. 服务端使用公钥A对应的私钥C(非对称加密)解密B
  6. 双方来往的消息都使用B加密解密

cookie

客户端通过浏览器向服务器请求时,会附带的一小段数据!!一般是上次通讯过程中服务器发送到浏览器并存储在本地的!!!

  • 用途:客户端状态管理(刷新后保持登录状态、购物车添加),个性化配置(用户自定义主题等)、跟踪用户行为(浏览历史等)
  • 分为临时性和持久性

session

客户端与服务器建立连接后服务器会生成一个会话(session ID),这个ID发送给客户端存储在浏览器,只要通过这个浏览器访问服务器就会携带这个id,服务器根据id检索会话内容,实现类似于cookie的功能,但他是存在服务器端的而且关闭浏览器/超时清空

  • 事实上,大多数浏览器都是在cookie中存储session ID的,如果禁用了页面cookie,就会在url中以参数sid=xxx传输

  • 区别:cookie只有ASCII字符串(session是object)可以存储,而且一般只有4k,还不安全,但不能都用session,服务器顶不住啊

SQL注入攻击

  • 在http请求中注入恶意sql查询语句,比如注入一个 password : ‘ or ‘1’=’1 ,服务器接收到这个请求,解析到这个参数,就会把参数构建到数据库中,而这个语句永远为真,所以就实现了破译密码。。。。

  • 防范措施:服务器和应用程序间加防火墙、用户输入验证和过滤、控制数据库权限、参数化传值(用%s传,而不是直接解析语句)

ARP与RARP

  • ARP用于将ip地址解析为MAC网卡地址,因为一串ip地址上哪知道你的设备在哪?只有知道了硬件唯一标识才可以!!!
  • RARP是逆向ARP,设备开机后没有自己的ip地址,要向RARP服务器发送自己的MAC地址,服务器才会给你分配一个ip地址!!!

常见的端口号

0--1023比较知名

  • http 80 https 443
  • ftp控制 20 ftp数据 21

DDos攻击

恶意控制大量网络设备,对某服务器发送大量请求导致占用网络资源。使得系统瘫痪

  • 负载均衡、分布式系统,保证崩了一台还有其他的可以用
  • DDos服务商,通过过滤异常流量预防攻击

MTU和MSS

  1. MTU是最大传输单元 ,硬件规定,如以太网是1500字节,不包含以太网帧头帧尾