美文网首页
HTTP&HTTPS

HTTP&HTTPS

作者: Never_Yg | 来源:发表于2017-07-27 14:42 被阅读31次

Socket开发基础
Socket注意事项
http基于TCP/IP通信协议来传递数据(HTML文件, 图片文件, 查询结果等)

HTTPS

  • 对称加密 速度快 秘钥传递问题无法解决
  • RSA非对称加密 用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据,只有对应的私钥才能解密 速度慢
  • 进化-----使用RSA传递对称加密的私钥(保证安全)-----使用对称加密的私钥机密通话(保证速度)
  • 中间人攻击---在A面前冒充B, 在B面前冒充A(需要解决你到底是谁)
  • 公证处---领个证书,证明身份(证书内包含基本信息和公钥)---->但是证书怎么传递?
  • 数字签名---把公钥和个人信息用一个Hash算法生成一个消息摘要(只要输入的信息有一点点变化,那生成的消息摘要就会发生巨变)--->但是中间人,虽然没办法改公钥,但是可以把整个原始信息都替换了,生成一个新的消息,让人辨别不出来
  • 公证中心(CA)---用它的私钥对消息摘要加密,形成数字签名
  • 数字证书 --- 原始信息 + 数字签名 叫数字证书
https.png

一个故事讲完HTTPS

HTTP工作原理

HTTP协议采用请求/响应模型,客户端向服务端发送一个请求报文,请求报文包含请求的方法, URL, 协议版本, 请求头部和请求数据. 服务器以一个状态行作为响应,响应的内容包括协议的版本,成功或错误代码, 服务器信息,响应头部和响应数据

GET和POST的区别

  • GET提交的数据会拼接到URL后面,在地址栏显示出来, POST把提交的数据放置在HTTP包的包体中,更安全
  • GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
  • GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
  • GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码

特点

  • 简单:客户向服务器请求服务时,只需传请求方法和路径
  • 灵活:HTTP允许传输任意类型的数据对象,传输的类型由Content-Type标记
  • 无连接:服务器处理完客户的请求,并受到客户的应答后,即断开连接
  • 无状态:没有请求的历史记录

URL

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

  1. 协议部分 http://
  2. 域名部分 www.aspxfans.com
  3. 端口部分 :8080
  4. 虚拟目录部分 从域名后的第一个"/"开始到最后一个"/"为止,是虚拟目录部分 /new/
  5. 文件名部分 index.asp
  6. 描部分 从"#"开始到最后
  7. 参数部分 从"?"开始到"#"结束

URI和URL

URI来传输数据和建立连接,URL是一种特殊类型的URI,包含了用于查找某个资源的足够信息

Web上可用的每种资源如HTML文档,视频片段,程序等都是一个URI来定位的

HTTP状态码

  • 1xx 指示信息 请求已接受,继续处理
  • 2xx 成功
  • 3xx 重定向
  • 4xx 客户端错误
  • 5xx 服务端错误

以下是几个常见的状态码:

200 OK

你最希望看到的,即处理成功!

303 See Other

我把你redirect到其它的页面,目标的URL通过响应报文头的Location告诉你。

悟空:师傅给个桃吧,走了一天了 :relieved:
唐僧:我哪有桃啊!去王母娘娘那找吧 :unamused:
304 Not Modified

告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊!

404 Not Found

你最不希望看到的,即找不到页面。如你在google上找到一个页面,点击这个链接返回404,表示这个页面已经被网站删除了,google那边的记录只是美好的回忆。

500 Internal Server Error

看到这个错误,你就应该查查服务端的日志了,肯定抛出了一堆异常,别睡了,起来改BUG去吧!
有些响应码,Web应用服务器会自动给生成。你可以通过HttpServletResponse的API设置状态码:

//设置状态码,状态码在HttpServletResponse中通过一系列的常量预定义了,如SC_ACCEPTED,SC_OK
void    setStatus(int sc) 

HTTP请求方法

  1. GET 请求指定页面信息,并返回实体主体
  2. HEAD 类似GET请求,不过返回的相应没有具体内容,用于获取报头
  3. POST GET只是获取数据,POST可以上传数据和获取数据
  4. PUT 从客户端向服务器传送数据并取代指定的文档的内容
  5. DELETE 请求服务器删除指定页面
  6. CONNECT
  7. OPTIONS 查看服务器性能
  8. TRACE(路径) 回显服务器收到的请求, 用于测试和诊断

HTTP请求报文解剖

HTTP请求报文由3部分组成(请求行 + 请求头 + 请求体)

request.png
  1. ①是请求方法, GET和POST是常见的HTTP方法,大多数浏览器也只支持GET和POST方法
  2. ②是请求对应的URL地址,它和报文头的Host属性组成完整的请求URL
  3. ③协议名称和版本号
  4. ④HTTP的报文头,包含若干格式为"属性名:属性值"的属性,服务端据此获取客户端的信息
  5. ⑤报文体 请求参数

常见HTTP请求报文头属性

  • Accept 客户端接受什么类型的响应
  • Cookie 客户端的Cookie通过这个报文头属性传给服务端
  • Referer 请求是从哪个网站过来的
  • Cache-Control 控制缓存(控制响应内容可不可以在客户端缓存,缓存多久)

HTTP响应报文解剖

HTTP的响应报文也由三部分组成(响应行+响应头+响应体):

response.png

TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。

UDP补充:
UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中如果出现了丢包,UDO也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交给由采用UDO的应用程序去处理。换句话说,UDP将部分控制转移到应用程序去处理,自己却只提供作为传输层协议的最基本功能。UDP有点类似于用户说什么听什么的机制,但是需要用户充分考虑好上层协议类型并制作相应的应用程序。

TCP补充:
TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

TCP与UDP区别总结:
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

相关文章

  • HTTP&HTTPS

    Socket开发基础Socket注意事项http基于TCP/IP通信协议来传递数据(HTML文件, 图片文件, 查...

  • HTTP&HTTPS

    网络基本概念 客户端(就是手机或者ipad等手持设备上面的APP) 服务器(远程服务器-本地服务器) 请求(客户端...

  • iOS http&https

    iOS 9 限制 http 协议的访问,如果 App 需要访问 http://, 则需要在Info.plist 添...

  • 详解HTTP&HTTPS

    前言 通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。而HTTP属于它内部的一个子集。在整个网络...

  • http&&https

    HTTP与HTTPS握手的那些事 今天我总结了什么是HTTP三次握手,还有HTTPS握手的过程以及为什么HTTPS...

  • 深入HTTPS系列一(HTTP&HTTPS)

    由于iOS即将强制使用HTTPS,所以最近花时间再次深入研究了一下HTTPS。该篇主要先讲一些HTTPS术语。 1...

  • Charles抓HTTP&HTTPS包

    HTTP抓包 1.打开Charles程序 2.查看Mac电脑的IP地址,如192.168.1.7 导航栏 -> H...

  • Wireshark与iOS&http&https

    Wireshark用户手册 上面是Wireshark用户手册的链接,整体情况请点击。 一,准备工作 Wiresha...

  • http&tomcat

    C/S: 客户端/服务器即要承担服务器端程序,以及客户端程序B/S:结构即为浏览器/服务器优点:只要编写服务器端程...

  • 关于git:使用http&https访问时记住账号密码

    ps:在使用当中经常使用ssh方式,但是有些时候使用http和https在访问速度上回快些。但是每次输入账号密码是...

网友评论

      本文标题:HTTP&HTTPS

      本文链接:https://www.haomeiwen.com/subject/dwpzkxtx.html