HTTP&HTTPS

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则是不可靠信道

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容