网络基础模型和HTTP协议

OSI七层模型和四层模型

全称是开放系统互连模型,国际标准化组织ISO制定的互联网通信标准。

四层模型是简化的模型,七层模型是理论层面理想化的,四层模型才是实际应用的模型。

1.HTTP协议

超文本传输协议,是用于从服务器到本地客户端(如浏览器)之间的超文本内容的传输。

HTTP协议的端口号:80,HTTPS端口号是443

0 - 1023: 知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的。

1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的。

1.1交互过程:客户端主动发起请求,服务器响应。

客户端可以使用浏览器等客户端软件发请求,服务器一般都会安装web服务器软件(tomcat\weblogic\apache等等)来相应你的请求,web服务器收到请求后给客户端发送相应的响应信息。

1.2协议特点

一般用于B\S(浏览器\服务器)模式,C\S(客户端\服务器)也可以用。

无连接:通信双方不建立持久的连接的,一发一收间有连接,处理完连接就断了。

无状态:因为不保持连接,所以自然不知道对方的状态。也不知道之前发过什么。

媒体独立:支持任何类型的数据,所以叫超文本,比如音视频、图片、文件、html、xml、json等

简单高效:使用过程中发报文,一个请求报文,一个响应报文。报文有统一的格式。

1.3HTTP请求

1.3.1请求就是发请求报文,客户端来发。请求报文的格式:

请求行:包含:请求方法 请求地址url HTTP协议及其版本,它们之间用空格分隔。
请求头:请求头是一些附加信息,内容比较多,我们只说常用的。这些信息的格式,用键值对来表示,key:value格式。

Accept:用于告诉服务器,我这个客户端可以处理的内容类型有哪些。

Referer:表示请求的来源是哪里。举例,你在百度的页面上点击了淘宝的连接,淘宝服务器收到你的请求后,就知道你的来源是百度。

Accept-Language:客户端可以接受的语言。

User-Agent:用户代理,用户通过什么代理来发请求的。一般都是浏览器,包括操作系统和浏览器版本等相关信息。

Content-Type:请求报文体(正文)的类型

Host:指定请求的资源所在的主机和端口号,如 localhost:8080

Content-Length:报文体的长度(单位是字节)

空行:请求头结束后,有一个空行
请求体:存放请求的数据(GET请求方法没有请求体,POST方法有请求体)

1.3.2  GET请求:

用于查询,比如打开一个网页比如打开百度,就是浏览器给百度服务器发了GET请求。

1.3.3  POST请求:

用于增删改,给服务器发数据,比如使用登录功能,比如使用百度翻译。

1.3.4常用的请求方法:

GET:用来查询获取资源

POST:向服务器提交数据,可以用来增删改

PUT:提交数据,修改资源

DELETE:删除资源

HEAD:类似于GET,只获取报头部分

TRACE:用于测试和诊断,让服务器原样返回我发送的内容

1.3.5 GET 和 POST 的区别:

参数存放的位置不同,get参数直接放在url里面,在?后面。使用键值对的形式表示,如key1=value1&key2=value2...,get请求携带的参数较少。对于汉字使用了URLEncode进行编码。多个参数之间使用&连接。post放在请求体里面。

get请求参数的长度有限制,因为url的长度就有限制。post请求的参数由于放在请求体中,所以长度没有限制。

get请求参数由于在url中,安全性低,post参数在请求体中,安全性高。

get请求可以被浏览器的历史记录记录下来,post请求浏览器无法保存记录。

1.4  HTTP响应

1.4.1响应是服务器发来的报文,响应报文格式:

状态行:协议版本 响应状态码 描述符 这些空格分隔
响应头:由键值对表示,内容跟请求头不太一样,没有请求头多。

Content-Type:响应报文体(正文)的类型,仍然使用MIME类型。

Content-Length:响应报文体的长度(字节单位)。

Set-Cookie:服务端设置的客户端的cookie信息(cookie用来对用户身份鉴权,服务器下发,保存到客户端的一段字符串,下次客户端访问服务器带上这段cookie就可以亮明身份)。

Cache-Control:服务器的响应内容是否要缓存到浏览器本地。

Content-Encoding:服务端发送的数据使用的压缩格式。

Content-Language:响应数据所使用的语言。

空行:表示响应头结束
响应体:存放服务端返回给客户端的数据

1.4.2常见的响应码有以下几大类:

信息响应:100-199:代表服务器收到了请求,但是需要请求者继续执行操作(比如报文很长,没有接收完整)。

成功响应:200-299:代表成功响应,你的请求被成功接收并且处理了。200是常见的,就代表请求成功。

重定向消息:300-399:代表重定向,需要进一步操作才能完成请求。常见的有300,表示多种选择,请求的资源可包括多个位置,可返回一个资源与地址的列表用于用户终端(例如:浏览器)选择。301,代表目标资源被永久的移动到了一个新的 URI。

客户端错误响应:400-499:代表客户端错误,404常见,代表你请求的资源不存在,在浏览器中,这意味着无法识别 URL。403代表没有权限,客户端没有访问内容的权限。

服务端错误响应:500-599:代表服务端错误,常见的500,服务器内部错误。501代表服务器不支持请求的功能。

1.5抓包实践

通过edge或谷歌浏览器自带的抓包工具,来实践抓包,了解报文结构。

get请求抓包:访问百度网站

post请求抓包:使用百度翻译。请求标题是:v2transapi,类型是:fetch/xhr。(xhr (xmlhttprequest) 和fetch 是前端实现ajax(asynchronousjavascript and xml)的两种方法)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值