深入理解TCP/IP应用层

匿名 (未验证) 提交于 2019-12-02 22:09:29

TCP/IP四层模型分为: 应用层,传输层(只关注起点(发送者)和终点(接收者)),网络层(规划出一条或几条路线),数据链路层(关注两个相邻点之间怎么传输)

协议
应用层 DNS,URI,HTML,HTTP,SSL,SMTP,POP,IMAPTELNET,SSH,FTP,SNMP 应用程序相关
传输层 TCP,UDP,UDP-Lite,SCTP,DCCP 操作系统内核负责
网络层 ARP,IP,ICMP 操作系统内核负责
数据链路层 网卡层(以太网协议)

设备驱动程序及

网络接口负责


一、应用层:

1、HTTP协议(主要协议):HTTP是超文本传输协议,是当前最流行也是最典型的应用层协议

HTTP还衍生出了封装SSL协议的“安全版”,HTTPS是HTTP协议的安全版,从2015年以后,基本上采用HTTPS,其更为安全,加密

2、HTTP协议的格式

HTTP协议格式又分为其请求和相应模式


请求模式:

1)首行:方法(GET/POST/HEAD/PUT/DELETE/...)+URL+版本号(HTTP1.1为多数场景下)

Content-Length 表示body部分的长度(字节)

  • Session是服务器进行描述用户身份信息的方式(服务端的概念)
  • 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;

空行:表示header结束的标记

3)body正文:即协议正文,数据种类非常多样了,也可能body为空(GET请求一般为空,POST请求一般有数据)空行后面的内容都是body,body允许为空字符串,如果body存在,则在Header中会有一个


响应模式:

1)首行+状态码(标识这次请求是否失败,以及原因)+状态码描述信息

2)协议头header,每一行是一个冒号分隔的键值对,请求的属性,每组属性之间用\n分隔,遇到空行表示Header结束

3)body:空行后面的内容都是body,body允许为空字符串,如果body存在,则在header中会有一个Content-Length属性会标识Body的长度;

如果服务器返回了一个html页面那么html页面中的内容就是在body中


方法 说明 支持的HTTP协议版本
POST 获取资源
GET 传输实体主体
PUT 传输文件
HEAD 获得报文首部
DELETE 删除文件
OPTIONS 询问支持的方法 1.1
TRACE 追踪路径 1.1
CONNECT 要求用隧道协议连接代理 1.1
LINK 建立和资源之间的关系 1.0
UNLICK 断开连接关系 1.0

常用的方法:GET和POST

GET和POST的区别?

GET把数据放在query_string来传输,POST请求通常把数据据通过body来传输

并不是唯一,也可以互放,只是习惯性


4、HTTP的状态码:

类别 原因短语
1XX Informational(信息性状态码) 接受的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错

200 OK 请求成功 2xx表示请求成功

403表示没有权限

5xx表示服务器错误

502(服务器挂了)

504超时(服务器响应速度过慢,服务器部署在某云上,带宽过小,卡只是现象,还有cpu,内存问题...cpu占用,带宽占用,内存占用)


cookie和session id的区别:

cookie:存了一个字符串(方便数据永久性存储):客户端里所保存的字符串

session id(大概率放到cookie) 会话id,session对象里面记录某个特定用户的登陆等信息,购买记录,购物车,结算等

会话对象由服务器创建,分配一个session id,再将session id写到浏览器的cookie里面,后续浏览器再访问你相同的网站(区别相同网页,而是网站)的时候,都会带上一个相同的cookie内容,来识别用户信息

(Session是服务器进行描述用户信息的方式(服务器端的概念))

实现Session机制的过程中(程序员手动实现的),通常要把 session id放到cookie中来保存

POST

文章来源: https://www.cnblogs.com/hetaoyuan/archive/2019/07/24/11236466.html
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!