web开发基础理论知识

web开发的理论知识

关于网络的基本知识

网址组成(四部分)上网的地址

协议      http, https(https 是加密的 http)
主机      zhihu.com  baidu.com之类的网址
端口      HTTP 协议默认是 80,因此一般不用填写
路径      下面的「/」和「/tags/python学习」都是路径

例子:http协议 + 分隔符 + 域名(主机、ip地址) + 路径
http://www.alanpro.win
http://www.alanpro.win/tags/python学习/


ip地址和dns服务器

电脑通信靠IP地址,IP地址记不住就发明了域名(domain name),然后电脑自动向DNS服务器(domain name server)查询域名对应的IP地址
比如g.cn这样的网址,可以通过电脑的ping程序查出对应 IP 地址
➜ ping g.cn
PING g.cn (74.125.69.160): 56 data bytes
(自查dns服务器缓存)


端口的概念

一个比喻:
用邮局互相写信的时候,ip相当于地址(也可以看做邮编,地址是域名)
端口是收信人姓名(因为一个地址比如公司、家只有一个地址,但是却可能有很多收信人)
计算机运行着多个程序,比如说当qq在向另一台电脑上的qq发送信息的时候,先是要找到另一台电脑(ip),找到电脑之后还要找到对应的程序,这样才能对应起来,在这里就是每个电脑都为qq分配了一个端口号。qq的端口号默认是4000,如果在启动qq的时候4000的端口号被占用则向后申请4001,以此类推。
在windows下用 netstat -ano | findstr “80”可以查看80端口的使用情况

如果具体想看哪个进程占用端口,可以用:tasklist | findstr “80”

端口是一个 16 位的数字,所以范围是 0-65535(2**16)


web后端开发是依托于http协议的

一个传输协议,协议就是双方都遵守的规范
为什么要用协议?因为只有有了同样的协议,两台计算机双方才能知道如何解析对方发来的信息。
为什么叫超文本传输协议呢,因为收发的是文本信息。
1,浏览器(客户端)按照规定的格式发送文本数据(请求)到服务器
2,服务器解析请求,按照规定的格式返回文本数据到浏览器
3,浏览器解析得到的数据,并做相应处理

http协议格式简单理解

请求和返回是一样的数据格式,分为4部分:
1,请求行或者响应行
2,Header(请求的 Header 中 Host 字段是必须的,其他都是可选)
3,\r\n\r\n(连续两个换行回车符,用来分隔Header和Body)
4,Body(可选)

请求的格式,注意大小写(这是一个不包含Body的请求):
原始数据如下
‘GET / HTTP/1.1\r\nhost:g.cn\r\n\r\n’
打印出来如下(服务器解析原始数据)
GET / HTTP/1.1
Host: g.cn

其中
1, GET 是请求方法(还有POST等,这就是个标志字符串而已)
2,/ 是请求的路径(这代表根路径)
3,HTTP/1.1 中,1.1是版本号,浏览器一般不会管这个

具体字符串是 ‘GET / HTTP/1.1\r\nhost:g.cn\r\n\r\n’

返回的数据如下
HTTP/1.1 301 Moved Permanently
Alternate-Protocol: 80:quic,p=0,80:quic,p=0
Cache-Control: private, max-age=2592000
Content-Length: 218
Content-Type: text/html; charset=UTF-8
Date: Tue, 07 Jul 2015 02:57:59 GMT
Expires: Tue, 07 Jul 2015 02:57:59 GMT
Location: http://www.google.cn/
Server: gws

Body部分省略

其中响应行(第一行):
1,HTTP/1.1 是版本
2,301 是「状态码,表示成功响应」,参见文末链接
3,Moved Permanently 是状态码的描述
浏览器会自己解析Header部分,然后将Body显示成网页

后端开发,web服务器的主要工作

主要就是解析请求,发送相应的数据给客户端。
可以用python或者别的语言模拟浏览器发送 HTTP(例如爬虫就是这样工作) 请求给服务器并把收到的所有信息打印出来

您的支持将鼓励我继续分享~