swoole学习之初识网络
网络的初识
什么是网页
网页一般是由.html/.htm文件+后端语言(PHP,JAVA,GO等)组成的;由.html/.htm文件提供网页展示效果,后端语言提供数据结构.一个简单的网页或者静态网页也可以不需要用到后端语言的数据支持,因为只是需要它展示网页效果.
什么是网站
简单来说它就是多个网页组成的集合,每个网页之间互有关联关系,所以来说叫做网站;但是在现实生活中,一个网站的组成需要一整套系统来相互支撑;例如一个新闻网站的建成,它需要一套新闻内容后台管理系统用来发布下架新闻的操作,新闻的展示与阅读需要用到前台网站.比如说:凤凰网,腾讯网,新浪网等
什么是IP和网址
IP就是一台电脑或者服务器的在互联网世界的地址,有了这个地址,就可以通过IP访问互联网世界中的任何主机,例如百度的IP(14.215.177.38),腾讯网的IP(101.91.42.232).IP访问虽然很好用,但是有些IP总是让人很难记住,这个网址就应运而生,网址就像这个IP的别名,我们可以通过好记的网址名称来访问自己要访问的网址,例如我们要访问百度,我们就不用再输入百度的IP,而是转输入百度的网址即https://www.baidu.com,就可以访问百度啦!(#.#)
访问网站的过程
我们通过访问百度(http://www.baidu.com)来分析,我们通过浏览器地址输入框,输入www.baidu.com并点击回车后,输入的域名会自动解析成要访问网站的IP地址(即:14.215.177.38),找到IP地址后,浏览器(客户端)会向百度网站(服务端)发送一条请求连接,百度网站(服务端)收到后,会给浏览器(客户端)返回一条同意连接的响应,浏览器(客户端)收到百度网站(服务端)同意连接的请求后,会再次发送一条我要开始传输数据啦的请求,这个时候我们迎接正式打开了百度网站(服务端),这种请求的过程也叫做三次握手的过程.打开了网站后,我们可以在百度搜索任何你想要搜索的信息,在这个过程中,浏览器(客户端)发送查询数据,百度(服务端)响应你的请求,并返回你要查询的数据结果.这个过程就是请求响应的过程;等你通过百度收集的资料差不多啦,准备要关闭百度网站是,浏览器(客户端)发送一条我要下线啦的请求告知给百度(服务端),百度(服务端)收到请求后,会给响应给浏览器(客户端)同意下线请求,浏览器(客户端)收到百度(服务端)的同意请求下线的响应结果,关闭浏览器(客户端);百度(服务端)会再次等待浏览器(客户端)的请求,等待是否有没有请求,若没有长时间没有请求,就表示已经断开啦,这个过程就叫做四次挥手;到这里这就是一个简单地访问网站的过程,下图是一个基本的三次握手,请求响应和四次挥手的过程.
三次握手示意图
四次挥手示意图
一些网络的基本概念
网站/应用的架构类型
类型 : B/S架构和C/S架构
网络通信的方式
类型:
短连接 : 如HTTP的网站访问,就是采用的短连接,短连接就是请求->响应
长链接 : 一般都是应用程序(如:游戏客户端,管理系统的客户端等),采用的是长链接,长链接就是可以一直保持在后台运行
事件
对于前端来说它就是用户在页面点击或者操作的动作,主要指的是js的实现;常见的实现方法:onclick,onbulr等,
对于服务端来说,它既可以通过前端请求接口的时候触发的相应的方法,也可以在定时的去触发指定的相应的方法,常见实现方法:api接口,常驻监听程序,定时任务等;常见的应用场景:商品的秒杀等
网络协议的初识
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
网络模型基本架构
图片来源自网络
常见的网络协议类型
tcp(Transmission Control Protocol,传输控制协议)
TCP是一种面向连接(连接导向)的、可靠的基于字节流的传输层通信协议。TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认、对失序的数据重新排序、丢弃重复数据。
特点:
1.TCP是面向连接的运输层协议
2.每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
3.TCP提供可靠交付的服务
4.TCP提供全双工通信。数据在两个方向上独立的进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号。
5.面向字节流。面向字节流的含义:虽然应用程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅是一连串的无结构的字节流。
http协议(HyperText Transfer Protocol,超文本传输协议)
HTTP是一个应用层协议,虽然在2015年已推出HTTP/2版本,并被主要的web浏览器和web服务器支持。但目前使用最广泛的还是HTTP/1.1版本。有关历史请查阅这里。
它的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。为了解决这个问题, Web程序引入了Cookie机制来维护状态。
网络响应状态码
类型
1xx:指示信息--表示请求已接收,继续处理。
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操作。
4xx:客户端错误--请求有语法错误或请求无法实现。
5xx:服务器端错误--服务器未能实现合法的请求。
常见的响应状态码
200 OK:成功返回状态,对应,GET,PUT,PATCH,DELETE。
201 created - 成功创建。
302 Found:重定向,新的URL会在response中的Location中返回,浏览器将会使用新的URL发出新的Request。
例如在IE中输入http://www.google.com. HTTP服务器会返回304, IE取到Response中Location header的新URL, 又重新发送了一 个 Request.
304 Not Modified:代表上次的文档已经被缓存了, 还可以继续使用。
400 bad request - 请求格式错误。
401 unauthorized - 未授权。
403 forbidden - 鉴权成功,但是该用户没有权限。
404 not found - 请求的资源不存在。
405 method not allowed - 该http方法不被允许。
410 gone - 这个url对应的资源现在不可用。
415 unsupported media type - 请求类型错误。
422 unprocessable entity - 校验错误时用。
429 too many request - 请求过多。
500 Internal Server Error:服务器发生了不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。