http协议及web服务基础

Web Service 应用层服务--http,https

应用层主要实现某类具体应用:跟dns相似,由运行在用户空间的应用程序来负责完成

跟dns服务类似,都是C/S架构

传输层协议:TCP,UDP,SCTP

IANA:互联网地址名称分配机构

0-1023:众所周知,永久的分配给固定的应用使用,又称为特权端口(只有管理员有权限控制端口);

1024-41951:也是注册端口,但要求不是特别严格,分配给程序注册为某应用使用;

41952+:一般到6w,客户端程序随机使用的端口,称之为动态端口或私有端口;其范围定义在/proc/sys/net/ipv4/ip_local_prot_range;

BDS Socket(套接字)是IPC的一种实现,允许位于不同主机(也可以是同一主机)上的进程之间进行通讯;

Socket API(封装了内核中的socket通信相关的系统调用)

通过Socket系统调用创建套接字,有以下分类

SOCK_STREAM:TCP套接字

SOCK_DGREAM:UDP套接字

SOCK_RAM:raw套接字

根据套接字所使用的地址格式,Socket Domail:

AF_INET: Address Family IPV4 地址

AF_INET6: ipv6 地址

AF_UNIX:同一主机上的不同进程间基于socket套接字通信使用的一种地址;又称为UNix_SOCK机制

想要基于套接字通讯,必须某一端先监听在端口上,客户端去发请求,监听者去响应

如图,客户与服务器如何通讯,首先服务器端要监听,如何监听并接收请求?

第一步socket()、先向内核或者库调用发起socket()系统调用或者socket()库调用--目的是为了创建一个套接字

只有创建一个套接字才能监听,接受客户端请求,所以socket()就是请求创建套接字

套接字是ip加端口,当程序第一次启动的时候,需要向内核注册申请一个套接字用于随后的通讯

申请成功进入下一步

第二步bind()、程序绑定在套接字上

第三步listen()、监听套接字

第四步accept()、启动accept()系统调用,接受客户端请求

如果没有客户端请求,则处于阻塞状态或者睡眠状态,直至客户请求到达

而客户端这边也需要创建一个套接字,然而并不用监听,所以无需绑定和listen这两个过程

通过connect()发起系统调用,connetc这个函数包括了服务器IP及端口

TCP三路握手中的最后一次,客户端要发送write()套接字请求,对linux而言,一切皆文件

在本地创建write()套接字,所谓通过套接字传输数据,就是向套接字写数据

服务端用read()套接字文件接受数据请求,并处理请求,将处理结果写入write()套接字文件中

内核在套接字中取得数据,应答给客户端的read()套接字,客户端读取read()套接字获得数据

在这一次通信中,文件过大需要分多次ip报文发送即read()-->write()重复执行

若本次通信结束--close()关闭并向服务端发送关闭请求

谁先发送的请求,谁负责结束

TCP协议的特性:

建立连接:三次握手

将数据打包成段:校验和(CRC32)

确认、重传及超时机制;

排序:基于逻辑序号完成

流量控制:滑动窗口算法;

拥塞控制:慢启动和拥塞避免算法;

http:hyper text transfer protocol,超文本传输协议是应用层协议,监听80/tcp,是文本协议,主要为客户端提供超文本文件

什么是超文本--使用html①编程语言所开发的纯文本信息

css:Cascading Style Sheet

js:JavaScript 脚本开发语言 是客户端脚本 需要下载到客户端并运行

对于web服务来说,有两种开发技术,有客户端(jsp)技术和服务端(php)技术

版本协议:

http/0.9版本 原型版本,功能简陋 不可以传输图片

http/1.0 cache,MIME,method 可以传输非文本数据

MIME:Multpurpose Internet Mail Extesion 多用途互联网邮件扩展 基于文本编码传输非文本数据

method:GET,POST,HEAD,PUT,DELETE,TRACE,OPTIONS 比0.9多很多请求方法

http/1.1:增强缓存功能

http/2.0:

了解rfc文档

工作模式

http请求报文:http request

http响应报文:http response

一次http事务:请求<-->响应 是由请求和相应共同组成

web资源:web resource 是一次请求以及相应的内容

静态资源(无须服务端做出额外处理):.jpg .png .gif .html .txt .js .css .mp3 .avi

动态资源(服务端需要通过执行程序做出处理,发送给客户端的是程序的运行结果): .php .jsp

注意:一个页面中展示的资源可能有多个;但每一个资源都需要单独请求

资源的标识机制:URL

Uniform Resource Locator:用于描述服务器某特定资源的位置

例: http://www.sina.com/index.html

Scheme②://Server[:Port]③/[/PATH/TO/SOME_RESOURCE]④

一次完整的http请求处理过程:

1、建立或处理链接:接受请求或拒绝请求

2、接受请求:接受来自于网络上的主机请求报文中对某特定资源的一次请求过程

3、处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息;

4、访问资源:获取请求报文中请求的资源 涉及磁盘-需要向内核发起系统调用

5、构建响应报文

6、发送响应报文

7、记录日志

 

注:

①hyper text mark language,编程语言,超文本标记语言

②Scheme(方案):指明协议

③服务器以及端口 默认端口可以省略

④文档路径

posted @ 2019-04-25 15:58  tianchengde  阅读(298)  评论(0编辑  收藏  举报