HTTP协议

TCP协议与HTTP协议

  • TCP协议主要用于数据传输控制,而HTTP协议主用用于应用层面的数据交互

  • HTTP协议属于应用层协议,是建立在TCP协议基础之上的,HTTP协议以客户端请求和服务器端应答为标准,浏览器通常称为客户端,而Web服务器称之为服务器端.客户端打开任意一个端口向服务端的指定端口(默认为80)发起HTTP请求,首先会发起TCP三次握手,TCP三次握手的目的是建立可靠的数据连接通道,TCP三次握手通道建立完毕,进行HTTP数据交互

  • 当客户端请求的数据接收完毕后,HTTP服务器端会断开TCP连接,整个HTTP连接过程非常短.HTTP连接也称为无状态的连接,无状态连接是指客户端每次向服务器发起HTTP请求时,每次请求都会建立一个新的HTTP连接,而不是在一个HTTP请求基础上进行所有数据的交互

资源定位标识符

  • HTTP请求的内容资源由统一资源标示符(uniform resource identifiers,URI)来标识,关于资源定位及标识有三种:URI、URL、URN
    • 统一资源标示符(uniform resource identifiers,URI),用来唯一标识一个资源
    • 统一资源定位器(uniform resource locator,URL),是一种具体的URI,URL可以用来标识一个资源,而且可以访问或者获取该资源
    • 统一资源命名(uniform resource name,URN),通过名字来标识或识别资源
  • 三种资源标识,其中URL资源标识方式使用最为广泛,完整的URL标识格式为
    • protocol://host[:port]/path/.../[?query-string][#anchor]
  • 参数详解
    • protocol:基于某种协议,常见协议有HTTP、HTTPS、FTP、RSYNC等
    • host:服务器的IP地址或域名
    • port:服务器的端口号,如果是HTTP80端口,默认可以省略
    • path:访问资源在服务器的路径
    • query-string:传递给服务器的参数及字符串
    • anchor:锚点
  • 示例
    • http://www.baidu.com/newindex/plus/list.php?tid=2#baidu
    • protocol:HTTP协议
    • host:www.baidu.com
    • path:newindex/plus/list.php
    • quert-string:tid=2
    • anchor:baidu...............

HTTP与端口通信

  • 端口是TCP/IP协议中应用层进程与传输层协议实体间的通信接口,端口是操作系统可分配的一种资源,应用程序通过系统调用与某个端口绑定后,传输层传给该端口的数据会被该进程接收,相应进程发给传输层的数据都通过该端口输出
  • 在网络通信过程中,需要唯一识别通信两端设备的端点,就是使用端口识别运行于某主机中的应用程序.如果没有引入端口,则只能通过PID进程号进行识别,而PID进程号是系统动态分配的,不同的系统会使用不同的进程标识符,应用程序在运行之前没有明确的进程号,如果需要运行后再广播进程号则很难保证通信的顺利进行
  • TCP/IP协议中引入了一种被称为套接字(socket)的应用程序接口.基于socket接口技术,一台计算机就可以与任何一台具有socket接口的计算机进行通信,而监听的端口在服务器端也称之为socket接口

HTTP request与response

  • 客户端浏览器向Web服务器发起request,Web服务器接到request后进行处理,会生成相应的response信息返回给浏览器,客户端浏览器接收到服务器返回的response信息,会对信息进行解析处理,最终用户看到浏览器展示Web服务器的网页内容
image.png
  • UNIX/Linux系统中执行curl -v命令可以打印Web服务器的request及response详细处理流程
  • curl -v www.baidu.com
image.png
  • request请求方法
    • GET:向指定资源发出请求,获取服务器端数据.
    • POST:向Web服务器提交数据进行处理请求,常指提交新数据
    • PUT:向Web服务器提交上传最新内容,常指更新数据
    • DELETE:请求服务器删除Request-URL所标识的资源。
    • TRACE:回显服务器收到的请求,主要用于测试或诊断。
    • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
    • OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法
    • HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

HTTP状态码

  • 100~199:用于指定客户端相应的某些动作(请求已被服务器接收,继续处理)
  • 200~299:用于表示请求成功
  • 300~399:已移动的文件且被包含在定位头信息中指定新的地址信息
  • 400~499:用于指出客户端的错误
  • 500~599:用于指出服务器错误
HTTP状态码 状态码英文 状态码中文含义
100 continue HTTP/1.1 新增状态码,表示继续,客户端继续请求HTTP服务器
101 switching protocols 服务器根据客户端的请求协议,切换到HTTP的新版本协议
200 ok HTTP请求完成,常用于GET、POST请求中
301 moved permanently 永久移动,请求的资源已被永久的移动到新URI
302 found 临时移动,资源临时被移动,客户端应继续使用原有URI
304 not modified 文件未修改,请求的资源未修改,服务器返回此状态码时,常用于缓存
400 bad request 客户端请求的语法错误,服务器无法解析或者访问
401 unanthorized 请求要求用户的身份认证
402 payment required 此状态码保留,为以后使用
403 forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 not found 服务器没有该资源,请求的文件找不到
405 method not allowed 客户端请求中的方法被禁止
406 not acceptable 服务器无法根据客户请求的内容特性完成请求
499 client has closed connection 服务器处理的时间过长
500 internal server error 服务器内部错误,无法完成请求
502 bad gateway 服务器返回错误代码或者代理服务器错误的网关
503 service unavailable 服务器无法响应客户端请求,或者后端服务器异常
504 gateway time-out 网关超时或者代理服务器超时
505 HTTP version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理

HTTP MIME类型支持

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

推荐阅读更多精彩内容

  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 1,855评论 0 3
  • 本文整理自MIN飞翔博客 [1] 1. 概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或...
    HoyaWhite阅读 2,634评论 2 20
  • 深入浅出HTTP协议(WEB开发和面试必备) 1.基础概念篇 a.简介 HTTP是Hyper Text Trans...
    半世韶华忆阑珊阅读 1,211评论 0 7
  • (原话)谈谈对HTTP协议的理解:超文本传输协议,应用于OSI网络模型中的应用层,是用于服务器传输超文本到本地浏览...
    24_yu阅读 874评论 0 1
  • 任何一个技术和知识在了解了大概之后还需要在学习和实践中不断总结、思考才能真正掌握,变成自己的东西。用自己的方式分析...
    Bobby0322阅读 627评论 1 5