DNS协议
DNS协议结构
- 16位标识:用于标记一对DNS查询和应答,以此区分一个DNS应答是哪个DNS查询的回应
- 16位标志:用于协商局的通信方式和反馈通信状态
- 接下来的四个字段指出最后四个字段的资源记录数据。对于查询报文而言,他一般包含一个查询问题,而应答资源记录数、授权资源记录数和额外资源记录数都为0。应答报文的应答资源记录数至少为1,而授权资源数和额外信息记录数可为0或非0。
DNS协议名字空间
例如:www.csdn.net
1、net:以及域名,表示这是一个网络提供商,除此之外,com表示企业域名,org表示非盈利组织
2、csdn:二级域名
3、www:习惯用法
域名的分级
国家顶级域名 | 中国:cn,美国:us,英国:uk… |
---|---|
通用顶级域名 | com公司企业,edu教育机构,gov政府部门,int国际组织,mil军事部门 ,net网络,org非盈利组织… |
反向域名 | arpa,用于PTR查询(IP地址转换为域名) |
DNS查询过程
- 递归查询。 当DNS服务器接收到查询请求时,不论成功或失败,都会做出对应的响应。(发生在DNS客户端与DNS服务器之间)
- 迭代查询。 DNS服务器根据自己的高速缓存或区域的数据,以最佳结果响应。如果DNS服务器无法解析,它可能返回一个指针。指针指向下级域名的DNS服务器,继续该过程,直到找到拥有所查询名字的DNS服务器,或知道出错、超时为止。(发生在DNS服务器之间)
一些问题
DNS的概念、用途、DNS查询的实现算法?
概念:
- 域名解析,www.xxx.com转换成ip,能够使用户更方便的访问互联网,而不用去记住能够被及其直接读取的ip地址
- DNS运行协议运行在UDP协议之上,hi使用端口号53
主机解析域名的顺序:
- 浏览器缓存
- 找本地的hosts文件
- 路由缓存
- 找DNS服务器(本地域名、顶级域名、根域名)
- 迭代查询、递归查询
FTP协议
控制连接和数据连接
数据连接只传输数据,控制连接传送命令和响应。
- 控制连接是建立在客户协议解释器和服务器协议解释器之间用于交换命令与应答的通信链路。
- 数据连接是传输数据的全双工连接。传输数据可以发生在服务器数据传输过程DTP和客户DTP之间,也可以发生在两个服务器的DTP之间。
主动模式和被动模式
主动模式:port
被动模式:PASV
HTTP协议
HTTP协议格式
HTTP的请求包括:请求行(request line)、请求头部(header)、空行、请求数据四个部分组成。
抓包的request结构如下
GET /mix/76.html?name=kelvin&password=123456 HTTP/1.1
Host: www.fishbay.cn
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
- 请求行:
GET
为请求类型./mix/76.html?name=kelvin&password=123456 HTTP/1.1
为要访问的资源,HTTP/1.1
是协议版本 - 请求头部:第二行起为请求头部,
Host
指出请求的目的地(主机域名);User-Agent
是客户端的信息,它是检测浏览器类型的重要信息,由浏览器定义定义,并在每个请求中自动发送 - 空行:请求头后面必须有一个空行
- 请求数据:请求的数据也叫请求体,可以添加任意的其他数据。这个例子的请求体为空。
HTTP状态码
类别 | 原因短语 | |
---|---|---|
1XX | Infomational(信息性状态码) | 接受的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态) | 服务器处理请求出错 |
- 200:OK
- 302:Found(代表临时重定向。该状态码表示请求的资源已经分配了URL。但302和301的区别是302是临时的,这个URL还可能会发生改变)
- 400:Bad Request(400表示请求报文中存在语法错误,需要修改后再次发送)
- 403:Forbidden(表明请求访问的资源被拒绝了)
- 404:Not Found(表明请求的资源在服务器上找不到,也可在服务器拒绝请求且不像说明理由时候使用)
- 500:Internal Server Errpr(表明服务器端在指向请求时发生了错误)
- 503:Service Unavailable(表明服务器暂时处于超负载护着进行停机维护,无法处理请求)
- 504:Gateway Timeout(网关超时)
一些问题
问题1:GET、POST区别
操作方式 | 数据位置 | 明文密文 | 数据安全 | 长度限制 | 应用场景 |
---|---|---|---|---|---|
GET | HTTP包头 | 明文 | 不安全 | 长度较小 | 查询数据 |
POST | HTTO正文 | 可明可密 | 安全 | 支持较大数据传输 | 修改数据 |
问题2:Cookies和Session的区别
- cookie是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。
- session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。
问题3:一次完整的HTTP请求所经历的步骤
比如:在浏览器舒服www.baidu.con后执行的全部过程
- 客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据报,输入到网络层。
- 在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
- 客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能多个路由器,这些都是由路由器来完成的工作,就是查找路由表决定通过那个路径到达服务器。
- 客户端的链路层,包通过链路层发送到路由器,通过另据协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然发送IP数据包到达服务器的地址。
问题4:HTTP/2.0与HTTP/1.1区别
问题5:Http与Https的区别
- HTTP的URL以http://开头,而HTTPS的URL以https://开头
- HTTP是不安全的,而HTTPS是安全的
- HTTP标准端口是80,而HTTPS的标准端口是443
- 在OSI网络模型中,HTTP工作于应用层,而HTTPS的安全传输机制工作在传输层
- HTTP无法加密,而HTTPS对传输的数据进行加密
- HTTP无需证书,而HTTPS需要CA机构wosign的颁发的SSL证书
问题6:什么是Http协议无状态协议?怎么解决Http协议无状态协议?
- 无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后序处理需要前面的信息。也就说,当客户端一次HTTP请求完成,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是个“老客户”。
- 可以使用Cookie解决无状态的问题,客户端第一次访问发给它一个Cookie,当客户端再次来的时候,拿着Cookie,服务器就知道这是个“老用户”了。
问题7:URI和URL区别
- URI:统一资源标识符,资源包括HTML文档、图像、视频片段、程序等
- URL:统一资源定位器,标识一个资源还指明如何locate这个资源。
来源:https://blog.csdn.net/CarmenIsOK/article/details/98849399