欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

深入理解TCP/IP应用层

程序员文章站 2022-04-15 08:54:36
TCP/IP四层模型分为: 应用层,传输层(只关注起点(发送者)和终点(接收者)),网络层(规划出一条或几条路线),数据链路层(关注两个相邻点之间怎么传输) 设备驱动程序及 网络接口负责 一、应用层: 1、HTTP协议(主要协议):HTTP是超文本传输协议,是当前最流行也是最典型的应用层协议 HTT ......

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为多数场景下)

2) content-length 表示body部分的长度(字节)

    content-type 表示body部分的数据格式

    协议头header:请求的属性,每一行都是一个键值对,键和值之间用": "来分割,每组属性之间用\n分隔

    user-agent:表示操作系统和浏览器的型号

  •    host 表示客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  •    referer表示当前页面是从哪个页面跳转过来的
  •    cookie:用于在客户端存储少量信息. 通常用于实现会话(session)的功能,浏览器存储数据的一种方式(客户端的概念) ,这里面包含身份标识session id内容都是由对应的程序员决定     的,session是服务器进行描述用户身份信息的方式(服务端的概念)
  •    location:搭配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中


3、http协议的方法:        

 

方法 说明 支持的http协议版本
post 获取资源 1.0,  1.1
get 传输实体主体 1.0,  1.1
put 传输文件 1.0,  1.1
head 获得报文首部 1.0,  1.1
delete 删除文件 1.0,  1.1
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表示请求成功

302 重定向                   3xx重定向(呼叫转移)

303 location:url      重定向到某url

 404 not found表示访问失败(但百度并没有用404而是302)                       4xx都表示客户端开头

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