http协议详解

2017-09-27  本文已影响0人  姜饼人_9e7b

一、套接字:

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相关术语

<html>
      <head>
             <title>
             </title>
      </head>
      <body>
             <h1></h1>
             <p></p>
             <h2></h2>
              <p>  <a href="a.html" >abc </a>  </p>
       </body>
</html>
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>
响应报文格式
2.1、响应报文格式:
<version> <status> <reason-phrase>
<headers>
空白行
<entity-body>
[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
上一篇 下一篇

猜你喜欢

热点阅读