http协议详解

一、套接字:

socket的位置

上图是一个C/S架构图
应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。
我们常用的web服务就用到http协议封装文本信息,然后使用TCP/IP做传输层协议将它发到网络上。ftp也是基于TCP/IP传输。

那么问题来了,大家都用TCP协议,主机收到数据,如何区分哪些数据是哪个进程应用的呢??于是就有了端口号。

就好比说两个公司要交流通信。那么最好要有对方的地址,以及收信的部门联系人。
IP好比一个公司的地址,那么端口号就可以看作是具体的部门联系人了。

image.png

在建立通信连接的每一端,进程间的传输要有两个标志:IP地址和端口号,合称为套接字地址(socket address)
客户机套接字地址定义了一个唯一的客户进程
服务器套接字地址定义了一个唯一的服务器进程

因此我们可以这么说,而应用层的HTTP、FTP等协议是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。

点击链接查看常用端口号

二、HTTP服务通信过程

image.png
image.png

三、HTTP相关术语

  • http: Hyper Text Transfer Protocol, 80/tcp

  • html: Hyper Text Markup Language 超文本标记语言,编程语言
    格式:

<html>
      <head>
             <title>
             </title>
      </head>
      <body>
             <h1></h1>
             <p></p>
             <h2></h2>
              <p>  <a href="a.html" >abc </a>  </p>
       </body>
</html>
  • css :cascading style sheet 层叠样式表
  • js: javascript
  • MIME: Multipurpose Internet Mail Extensions
    格式:
major/minor
text/plain
text/html
text/css
image/jpeg
image/png
video/mp4
application/javascript

四、HTTP工作原理

1、http事务

一次HTTP操作称为一个事务:请求<-->响应
其工作过程可分为四步:
1、首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
2、建立连接后,客户机发送一个请求报文给服务器
3、服务器接到请求后,给予相应的响应报文
4、客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户端与服务器断开连接。

image.png

2、http报文

请求报文格式
2.1、请求报文格式:
<method> <request-URL> <version>
<headers>
空白行
<entity-body>
  • 请求行
    请求行由方法字段、URL 字段 和HTTP 协议版本字段 3 个部分组成,他们之间使用空格隔开。常用的 HTTP 请求方法有 GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;

  • 请求头部
    请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息。典型的关键字有:
      ● User-Agent:产生请求的浏览器类型;
      ● Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ / ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;
      ● Accept-Language:客户端可接受的自然语言;
      ● Accept-Encoding:客户端可接受的编码压缩格式;
      ● Accept-Charset:可接受的应答的字符集;
      ● Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
      ● connection:连接方式(close 或 keepalive);
      ● Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;

  • 请求包体
    请求包体不在 GET 方法中使用,而是在POST 方法中使用。POST 方法适用于需要客户填写表单的场合。与请求包体相关的最常使用的是包体类型 Content-Type 和包体长度 Content-Length;

响应报文格式
2.1、响应报文格式:
<version> <status> <reason-phrase>
<headers>
空白行
<entity-body>
  • 状态行
    状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类

  • 响应头部

    • Location:Location响应报头域用于重定向接受者到一个新的位置。
    • Server:Server 响应报头域包含了服务器用来处理请求的软件信息及其版本。
    • Connection:连接方式;
  • 响应包体
    服务器返回给客户端的文本信息;

[root@centos7 ~]#curl http://172.16.80.200 -v
* About to connect() to 172.16.80.200 port 80 (#0)
*   Trying 172.16.80.200...
* Connected to 172.16.80.200 (172.16.80.200) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 172.16.80.200
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: nginx/1.10.2
< Date: Wed, 27 Sep 2017 08:44:01 GMT
< Content-Type: text/html
< Content-Length: 21
< Connection: keep-alive
< X-Powered-By: PHP/5.4.16
< X-Varnish: 65538 32785
< Age: 15
< Via: 1.1 varnish-v4
< Accept-Ranges: bytes
< 
this is a test web

五、一次Web请求的基本过程

建立连接
接收请求
处理请求
访问资源
构建响应 (封装报文)
发送响应
记录日志 (产生磁盘I/O)

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

推荐阅读更多精彩内容