美文网首页
http协议详解

http协议详解

作者: 姜饼人_9e7b | 来源:发表于2017-09-27 17:30 被阅读0次

一、套接字:

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

相关文章

  • iOS学习笔记之HTTP协议,iOS缓存和CoreData

    一.HTTP协议: 参考资料: HTTP协议详解:HTTP协议详解 超文本传送协议(百度百科):超文本传送协议百度...

  • Http

    HTTP 协议 HTTP 协议详解 超文本传输协议(HTTP,HyperText Transfer Protoco...

  • Java----使用nioSocket获取和返回http报文

    参考博客:HTTP协议(一)之HTTP协议详解 HTTP协议 HTTP(HyperText Transfer Pr...

  • HTTP协议详解

    参考:HTTP协议详解

  • HTTP协议详解

    HTTP协议详解 一.HTTP简介 1.HTTP协议,即超文本传输协议(Hypertex...

  • HTTP

    HTTP 来源:博客 HTTP详解 HTTP协议详解 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、...

  • HTTP 协议详解

    HTTP 协议详解 HTTP(HyperText Transfer Protocol)超文本传输协议。其最初的设计...

  • Golang面试之HTTP

    引用 HTTP协议详解 HTTP协议原理详解及应用 LwIP应用开发笔记之八:LwIP无操作系统HTTP客户端 U...

  • HTTP协议详解

    HTTP协议详解 INDEX 原文地址 什么是HTTP协议 URL HTTP消息结构 HTTP方法 状态码 Hea...

  • HTTP协议之状态码详解

    HTTP协议之状态码详解 Hypertext Transfer Protocol -- HTTP/1.1

网友评论

      本文标题:http协议详解

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