应用层知名协议

应用层协议:
1.HTTP协议:超文本传输协议,扩展起来很方便
URL:平时俗称的“网址”,称为统一资源定位符,如:https://www.baidu.com/ URL组成:协议方案名称://用户名:密码@服务器地址:端口号/请求资源路径?查询字符串#片段标识符
服务器的地址就是IP地址,域名–》ip;ping 域名–查看域名对应的ip;如果没写端口号,默认80端口
查询字符串是由键值对形式存储,并且不能有中文、特殊符号等,出现的话就会进行转义(urldecode解码;urlencode编码)
fiddler抓包:浏览器发送的信息先发送到fiddler进行抓包,再把请求转发给服务器,服务器把结果发送到fiddler,再经fiddler转发给浏览器;fiddler抓包工具就相当于代理(请求转发)。
请求转发是正向代理,如果是把数据准备好,有请求时再进行转发就是反向代理。

请求报文格式:
1.首行:方法(GET) URL 版本号(HTTP/1.0 1.1 1 2.0)
2.协议头部header:每一行是一个键值对,键和值之间用“:”来分割
3.空行:协议头的结束标记
4.正文(body):通常情况下GET方法对应的请求没有body;POST方法对应的请求有body
body部分的格式可能和url中的参数是一样的。Content-Type: 指定body的数据类型(text/html等) Content-Length:长度
响应报文格式:
1.首行:版本号 响应状态码 状态描述信息
响应状态码:1XX 信息状态码 接收的请求正在处理;2XX 成功状态码 请求正常处理完毕;
3XX 重定向状态码 需要进行附加操作完成请求;4XX 客户端错误状态码 服务器无法处理请求;
5XX 服务器错误状态码 服务器处理请求出错;常见的右200,请求成功;404,找不到页面。
2.协议头部header:每一行是一个键值对,键和值之间用“:”来分割
Content-Type: 数据类型(text/html等)
Content-Length:长度
Transfer-Encoding:
User-Agent: 声明用户的操作系统和浏览器版本信息;
Accept:接收信息
referer:记录是从哪个页面跳转过来的
location搭配3XX状态码使用,告诉客户端接下来要去哪里访问
Cookie:在客户端存储少量信息,通常用于实现会话(session)功能
1.cookie字段根据每个域名会保存一份,Set——Cookie:字符串(包含身份标识)
2.cookies长度是有限的,一般浏览器长度上限是4k

Java如何实现一个登陆功能(Cookie实现)
3.空行:header部分结束
4.正文body:html
GET和POST区别:GET提交的数据在URL中;POST提交的数据在正文中

《HTTP权威指南》、《图解HTTP》推荐书籍*****

2.HTTPS协议:基于SSL的http协议,在HTTP应用层与TCP传输层之间加了一层安全层,信息在传输之前先进行SSL或TLS安全层加密,然后再传输。

3.FTP协议:文件传输协议;可以使主机之间共享文件,用于控制Internet上文件的双向传输。
作用:让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷贝过来,或者将本地计算机上的文件拷贝到远程计算机去。
FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到主机上的FTP服务器程序。
FTP传输方式:ASCII传输模式和二进制数据传输模式
FTP的工作方式:1.Standard(也就是PORT方式,主动方式)FTP客户端发送PORT命令到FTP服务器 2.Passard(PASV,被动方式)FTP的客户端发送PASV到FTP Servlet
当FTP客户端与服务器建立FTP连接时,将与服务器上的两个端口建立联系:端口20和端口21.FTP使用不同的端口号传输不同的内容,会建立不同的TCP连接。
首先,使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP连接用于数据传输。

4.DNS协议:DNS是⼀一整套从域名映射到IP的系统
域名:像Linux目录结构一样,现代因特网采用层次树状结构的命名方法,任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,该名字称为域名。
1)域名册分级:域名可可以划分为各个子域,顶级域(国家顶级域、通用顶级域、反向域名)—二级域—三级域。
通常情况下,本机向本地域名服务器向根域名服务器的查询通常采用迭代查询。

域名解析总体可分为一下过程:
(1) 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据.
(2) 如果没有, 就向上级域名服务器进行查找, 依次类推
(3) 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址
(4) 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程

反向DNS(reverse DNS)是已经知道IP的前提下,想要查询域名。反向DNS也是采用分层查询方式,对于一个IP地址(比如106.10.170.118),依次查询in-addr.arpa节点(如果是IPv6,则为ip6.arpa节点),106节点,10节点,170节点,并在该节点获得106.10.170.118对应的域名。

DNS服务器十分重要,因为它掌握了整个互联网的地址簿,如果上网的人都去同一个地方访问某一台服务器,那么时延会非常大,因而DNS服务器一定要设置成高可用、高并发、分布式的。

DNS解析流程
客户端发出DNS请求,例如www.163.com给本地DNS服务器,本地DNS收到请求,查看缓存,如果找到www.163.com,就直接返回IP地址;
如果没有在缓存中找到,本地DNS就会去问根域名服务器,根域名服务器是最高层次的,全球共有13套,它不直接用于域名解析,但是能指明一条道路;根域名服务器收到请求,发现后缀是.com,返回它的顶级域名服务器地址给本地DNS;本地DNS转向问顶级域名服务器,顶级域名服务器就是树状图中的第二层,大名鼎鼎的一级域名,它负责管理二级域名;顶级域名服务器收到请求,返回负责www.163.com的权威域名服务器地址;本地DNS转向问权威域名服务器,它是域名解析结果的原出处;权威DNS服务器查询后将对应IP地址告诉本地DNS;本地DNS再将其返回客户端。

5.SSH协议:为远程登录会话和其他网络服务提供安全性的协议,SSH使用最多的是远程登录和传输文件,实现此功能的协议都不安全(包括FTP、TELNET等),因为它,们使用明文传输数据,而SSH在传输过程中的数据是加密的,安全性更高。
工作原理:SSH协议是基于非对称加密方法的,服务器和客户端都会生成自己的秘钥和公钥。
1)服务器建立公钥;如果远程服务器是新系统,会在/etc/ssh目录下生成一个名为ssh_host_ecdsa_key的私钥,之后每次启动ssh的度武器时候,系统都会自动在此路径下查找公钥。
2)客户端请求连接。3)服务器发送公钥给客户端,服务器接到请求后,把公钥传给客户端使用。
(4) 客户端记录服务器公钥并计算自己的公私钥。客户端将服务器传来的公钥记录在~/.ssh/known_hosts中,若是已经记录有该服务器公钥,则比对是否一致,一致后就计算客户端自己的公私钥。
(5) 客户端发送自己的公钥给服务器。客户端将自己的公钥发送给服务器,这样服务器端就有客户端公钥+服务器自己私钥,客户端就有服务器公钥+客户端自己私钥,组成了非对称加密系统。
(6) 开始双向加解密。服务器发送数据:用客户端公钥加密,客户端收到数据后用自己私钥解密。客户端发送数据:用服务器公钥加密,服务器收到数据后用自己私钥解密。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值