一、关于网络协议的整体梳理

1.1 客户端和服务端的通信

常见的架构,B/S和C/s架构。而在浏览器中运行王爷的属于B/S架构。网页浏览器通过地址栏的url获取服务器对应的资源文件。通过浏览器的处理后,显示在页面上。如上图,发送请求的是客户端,服务器则为服务端。web使用HTTP协议作为规范,从而完成从客户端到服务端的运作流程。从这个角度来看,web协议是在http协议上通信的。

参考自-《图解HTTP》一书

1.2  HTTP的版本迭代大致情况

1990年是HTTP/0.9,HTTP/1.0正式作为标准是在1996年。1.1年公布了Http1.1版本是现在使用范围较高的版本。HTTP/2.0版本正在修订,覆盖率不高

1.3  TCP/IP和http协议之间的关系

《图解HTTP》一书

发送端由上往下走,接收端由下往上走。为了传输方便,在传输层把从应用层手到的数据进行分割,并打上标记需要和端口号发给网络层。在网络层,增加MAC地址转发给链路层,相当于获取到了对应的物理地址。这样链路层就可以进行转发。

对应的头部信息,经过的层增加,后再消去。

1.4 信息传递相关概念和逻辑的梳理

1.4.1 信息传递的地址

这些协议和层的目的最终都是为了信息的传递,那么这样设计结构的目的也是为了携带更少的信息更快的到达目的地。目的地相当于地址,ip地址是节点分配的地址,mac地址是网卡所属的固定地址。

1.4.2  路由转发

使用RIP协议获取对应的mac地址,实现信息的传递。因为对应的设备无法在同一个局域网,因此需要经过多次路由转发,才能到达目标设备。

可以根据ip地址反查对应的mac地址。

二、相关问题整理的答案

上一次思考关于网络协议想到了这些问题。在网上查找和整理相关问题的大致答案。

(1)TCP/IP网络协议族的构成,每层协议在应用程序中发挥的作用。TCP和udp的区别

Tcp/ip协议是规定了网络的基础运行方式,计算机和网络设备如何进行通信的规则。而TCP/IP重要的一点就是分层,如果某一层的协议不好。那就可以直接进行置换,只需要把对应层的接口设计好。那么每一层的内部逻辑设计就可以自由的设计。

TCP协议是位于传输层的协议,特点是无状态

(2)常常听到过的浏览器发送请求到服务器,其中进行的三次握手和四次挥手的详细原理是什么,为什么要使用这种机制?

三次握手简单来说:是确认客户端可以发送,确认服务端可以接收和发送,确认客户端可以接受的过程。而这个过程的实现是通过SYN/ACK的方式实现的。目的就是为了建立连接。目的是为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误-《计算机网络》.

四次挥手:是双方发起请求断开连接和确认断开连接的过程。

1.由客户端发起断开客户端到服务端的请求(发送FIN)

2.由服务端确认收到客户端断开客户端的请求(发送ack)

3.由服务端发送断开服务端到客户端的请求(发送FIN)

4.由客户端确认收到服务端发送的断开服务端到客户端的请求(发送ack)

(3)DNS的作用、DNS解析的过程,DNS的过程是否可控,DNS的快慢会影响到什么的速度.与之相关的cdn是什么?

单纯的ip地址访问不符合我们的记忆习惯,因此需要更形象的方式映射对应的ip地址.DNS服务同样位于应用层。提供域名到ip地址的解析功能。发送到对应的服务器获取对应的ip返回,会影响对应页面打开的快慢。

CDN(中文:内容分发网络,全称:Content Delivery Network)是构建在网络之上的内容分发网络--来自于搜索百科。核心作用是缓存,通过距离用户更近的网络节点,存储用于访问的资源。达到更快的返回对应资源的效果。

(4)http的请求和相应由哪些部分具体组成。常见的请求头有哪些,有哪些请求方式,区别是什么?

路径,请求头,请求体。常见的请求头中规定了请求的附加信息,客户端信息,对响应内容相关的优先级内容。

1.判断服务器数据是否为最新:

If-Modified-Since:把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中.

If-None-Match:If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。 当用户再次请求该资源时,将在HTTP Request 中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag. 使用这样的机制将提高网站的性能。例如: If-None-Match: "03f2b33c0bfcc1:0"。

(2)用于控制服务器缓存

ache-Control:指定请求和响应遵循的缓存机制。缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程)。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。
Cache-Control:Public 可以被任何缓存所缓存
Cache-Control:Private 内容只缓存到私有缓存中
Cache-Control:no-cache 所有内容都不会被缓存
Cache-Control:no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
Cache-Control:max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
Cache-Control:min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
Cache-Control:max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

(5)http常见状态码的含义,如何通过大致的状态码定位到相关问题?

1.  1开头。表示信息已经接收,正在继续处理

100:初始的请求已接受,客户应当继续发送请求的其余部分。

101:服务器将遵从客户的请求转换到另外一种协议。

2. 2XX:成功-表示请求已被成功接收、理解、接受;

200:成功,服务器已成功处理了请求,通常,这表示服务器提供了请求的网页。

201:已创建,请求成功并且服务器创建了新的资源。

202:已接受,服务器已接受请求,但尚未处理。

203:非授权信息,服务器已成功处理了请求,但返回的信息可能来自另一来源。

204:无内容,服务器成功处理了请求,但没有返回任何内容。

205:重置内容,服务器成功处理了请求,但没有返回任何内容。

206:部分内容,服务器成功处理了部分GET请求。

3.3XX:重定向-要完成请求必须进行更进一步的操作;

301:永久移动,请求的网页已永久移动到新位置,服务器返回此响应(对GET或HEAD请求的响应)时 ,会自动将请求者转到新位置。

302:临时移动,服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置进行以后的请求。

303:查看其它位置,请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。

304:未修改,自从上次请求后,请求的网页未修改过,服务器返回次响应时,不会返回网页内容。

305:使用代理,请求者只能使用代理访问请求的页面,如果服务器返回此响应,还表示请求者应使用代理。

307:临时重定向,服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

4. 4XX:客户端错误-请求有语法错误或请求无法实现;

400:错误请求,服务器不理解请求的语法。

401:未授权,请求要求验证身份。对于需要登陆的网页,服务器可能返回次响应。

402:保留有效ChargeTo头响应

403:禁止,服务器拒绝请求。

404:未找到,服务器找不到请求的网页。

5. 表示服务端错误信息

500 Internal Server Error 内部服务器错误

502 Bad Gateway 网关错误问题

(6)HTTP分别经过了哪几个大版本的变化,带来了什么改变

HTTP V0.9 仅支持GET请求,返回HTML。过时
1.0 有HTTP报文的基本结构,包含头部字段、内容字段。仅支持GET、HEAD、POST。默认关闭 keep-alive
1.1 更多方法、状态码
更丰富的协商(报文对应字段更加丰富)
缓存(控制缓存的机制)
分块传输
默认开启keep-alive管线化传输 HTTP pipelining
2.0 改变结构,大幅优化性能(对具体的传输模式,加了一个逻辑层)

(7)HTTPs的加密原理,如何开启https,如何劫持https请求?

HTTPs的主要加密原理是非对称加密。

简单步骤描述

1.生成并提交CSR(证书签署请求)文件。

2.CA机构进行验证。

3.CA发放证书,将证书部署到服务器上面。

(8)webSocket、socket和HTTP的区别和关系?

在搜狗百科中的描述:WebSocket协议是基于TCP的一种新的网络协议,目的是为了实现服务器的向客户端的主动推送,又称为全双工通信。

Socket是传输控制层协议,,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。

http是应用层的协议,是基于tcp的可靠性传输协议。

(9)网络协议和请求之间的关系。现存的js原生请求有哪几种,和协议有什么关系?

post请求和get请求都是基于tcp协议的请求,get请求限制内容的大小的原因并非是tcp协议的限制,而是对应的发送载体中浏览器的相关限制.

(10)跨域事件和浏览器以及网络协议之间的关系吗,以及解决跨域事件的常见方法?

跨域事件的原因核心是因为浏览器的同源策略,来避免对应的危险界面嵌套安全界面,伪装请求的发送的情况。跨域事件并非是针对服务器,而是浏览器造成的。

因此针对这种情况

1.jsonp中的img和get请求不受到对应的同源策略的限制

2.前端和后端实现对应的允许跨域,以及允许跨域的域名

3. 使用代理的方式,使用代理服务器,发送到对应服务器以及接收对应的返回信息。

(11)网络协议的哪个环节,可以被用来利用发起攻击?

主要可以被利用发起攻击的,一部分是利用用户对界面的信任,也就是xss攻击。

另一部分则是利用发送请求的信任,也就是csrf攻击。对应的浏览器无法判断是否是该用户发起的请求。则在一个界面进入到另一个界面的请求的时候,会自动携带对应的cookies信息.

网络协议和浏览器到网络简单攻防实现的探索(二)相关推荐

  1. 趣谈网络协议-第二模块-底层网络知识详解:4陌生的数据中心2CDN和数据中心

    趣谈网络协议-第二模块-底层网络知识详解:4陌生的数据中心2CDN和数据中心 1:CDN:你去小卖部取过快递么? 使用"中间仓库"来优化 网络中的"就近配送" ...

  2. 服务器网络协议是什么,介绍网络协议,什么是网络协议三要素?

    网络的复杂性取决于人们对它的需求.那么在这当中,最为重要的就是网络协议了.那么什么是网络协议?相信很多人都会疑惑,下面给大家介绍网络协议是什么以及网络协议的三要素是什么的基础知识,不懂的朋友可以通过本 ...

  3. 趣谈网络协议-第二模块-底层网络知识详解:2最重要的传输层

    趣谈网络协议-第二模块-底层网络知识详解:2最重要的传输层 1:第10讲 | UDP协议:因性善而简单,难免碰到"城会玩" TCP 和 UDP 有哪些区别? UDP 包头是什么样的 ...

  4. [ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP(二)

    [ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP(一) [ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP(二) 上篇回顾: 详细介绍了DHCP的基本概念,作用,报文类型,报文格式,端口,角色等 ...

  5. java相关网络协议无响应_java网络协议有哪些

    上网的途径有很多,java是最普遍的,那么卑java网络协议有哪些?了解网络安全常识,首先就要了解计算机网络安全有哪些基本注意事项,下面佰佰安全网小编就带您认识一下吧. 概念 协议是指计算机通信网络中 ...

  6. java常用网络协议_初识java网络编程

    一.基本概念什么是计算机网络?计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递 ...

  7. 趣谈网络协议1-为什么学习网络协议

    来自极客时间<趣谈网络协议> 学习过程遇见问题:一看觉得懂,一问就打鼓,一用就糊涂. 1.为什么要学习网络协议 一般编译过程: 词法分析: 词法分析是编译的第一阶段.词法分析器的主要任务是 ...

  8. 网络协议基础01-七层网络协议

    前言:为什么学? 1.避不开:几乎所有的程序运行都会涉及到网络协议 2.不过时:越基础知识越不容易过时,值得花时间深入学习和积累. 容器技术.大数据.云计算.人工智能.区块链...等技术更新迭代速度很 ...

  9. 【网络协议趣谈】网络分层的含义

    一.四个问题拷问 为什么网络要分层呀?因为不同的层次之间有不同的沟通方式,这个叫作协议.例如,一家公司也是分层次的,分总经理.经理.组长.员工.总经理之间有他们的沟通方式,经理和经理之间也有沟通方式, ...

最新文章

  1. 发个IOCP的C++例子
  2. zookeeper都有哪些使用场景
  3. java判断ftp是否连接_校验FTP是否能正常连接的Java类
  4. c++基础——程序流程结构之选择结构
  5. equals方法重写详解
  6. 2015计算机二级公共基础知识,2015年计算机二级公共基础知识考点测试题(8)
  7. joomla tab 扩展_如何使用扩展功能扩展Joomla网站的功能
  8. 请详细描述listview与gridview的异同点_一建考试中,实在不会的怎么办?教你从题目中获取得分点!...
  9. JOBDU 1108 堆栈的使用
  10. web攻击方式和防御方法
  11. 信息学奥赛一本通——解题目录
  12. Mac电脑怎么设置动态桌面,heic动态桌面壁纸怎么使用
  13. 【Java面试题】线程的生命周期包括哪几个阶段?
  14. java程序员自荐信_【程序员英文的自荐信】程序员优秀员工自荐信
  15. cad调了比例因子没反应_CAD教程:自由缩放命令的操作流程
  16. 试用了5款BI分析工具,终于找到了上手最快的那一个!
  17. 电脑图标出现蓝色问号解决方法
  18. Navicat Premium 12 中文版v12.1.19
  19. [转载]丢掉鼠标-Mac神软Alfred使用手册1_我是亲民_新浪博客
  20. 链脉刘松华:如何用智能名片打造粉丝经济

热门文章

  1. 基于R语言或Matlab直接读取压缩包中的数据
  2. VS2017,MFC对WPS下Excel表格的操作
  3. 基于Linux系统部署新世纪版五笔输入法
  4. JAVA——eclipes的下载步骤
  5. 嵌入式软件学习问题汇总(一)什么是嵌入式?
  6. MC/DC覆盖的计算总结
  7. osgearth]样式表style中参数总结(OE官方文档翻译)
  8. 南京大学计算机学院英才计划,强基计划|南京大学信息与计算科学专业:三院联合师资,本硕博衔接培养信息计算和AI人才...
  9. html怎么打入文本框,html怎么在文本框里面输入文字
  10. 免费多功能转码机器人(小程序转码机器人)