计算机网络--应用层
应用层:
直面程序员的一层,因为应用程序是程序员自己写的,因此应用层的协议都是程序员自己定的
自定义协议
程序员自己根据自己应用的特点,定义协议(数据格式/数据描述信息)
eg:以一个简单的网络版计算机为例
功能:客户端发送两个数字以及一个运算符给服务端,服务端获取到数据然后进行运算
int num1; int num2; char op;
- num1, num2, op ----将所有的数据转成字符串,使用特殊字符间隔;这时候就将数据按照指定协议组织起来了.
- 采用结构体构造二进制数据串
struct cal_t{int num1;int num2;char op; };
序列化:将各个数据对象按照指定的协议组织成为持久化存储/数据传输的二进制数据串
反序列化:将二进制数据传按照指定协议解析等到各个数据对象
常见的序列化方式:json序列化/protobuf/二进制序列化
知名协议
HTTP协议: 超文本传输协议—早期专门用于传输超文本数据html,但是随着协议发展多元化,不限制数据格式
网站-统一资源定位符:URL----在网络中唯一表示定位一个资源
如何定位----URL中包含的元素:
协议方案名称://认证用户名:认证密码@服务器IP地址:服务器处理进程端口/请求的资源路径?查询字符串#片段标识符
http://username:password@www.xxx.com:80/index.html
服务器IP地址:
我们看得到不一定是IP地址,也可能是域名-服务器别名----通过域名解析服务器就能得到服务器的IP地址
服务器端口:
web服务器默认http服务器端口是80端口,默认不显示
/请求的资源路径:
资源在服务器上的路径,这里的/是http根路径,但是是一个服务器上的相对根目录,只是一个子目录
查询字符串:
客户端提交给服务端的一些数据,有key=val&key=val形式的键值对组成
查询字符串中不能出现特殊字符,因为URL中特殊字符都有特殊含义,一旦提交的数据中有特殊字符,就会造成歧义,因此若提交的数据中有特殊字符,则需要进行数据转义
urlencode: url编码,将特殊字符每一个字节,转换为16进制的数字字符,并且使用%前缀做为转移表示
urldecode:url解码,在url中遇到%,则认为气候两个字符需要转移,将第一个字符转换成数字乘以16/左移4位,加上第二个字符转换的数字
片段标识符
html中的一个标签id,直接跳转到页面的某个位置
HTTP协议实现:
抓包工具:wireshark / fiddler
wireshark:网卡抓包工具,抓取流经网卡的所有数据流量----什么包都能抓
fiddler:浏览器的代理工具,通过代理实现数据抓包-----专业的http抓包工具
HTTP协议格式:
请求:
首行: GET http://123.123.123.123/admin HTTP1.1 以空格进行间隔包含三个要素,并且最终以\r\n作为结尾
请求方法:GET/POS/HEAD/DELETE/CONNECT/OPTION
GET --请求实体资源,也可以通过url中查询字符串向服务器提交数据(数据不安全),但url长度有限制(各个服务器应用商的限制)
POST --主要用于向服务器提交数据,提交的数据在正文中(数据安全)
HEAD --类似于GET,相较于GET,HEAD只要响应头部,而不响应正文
URL: http://123.123.123.123
协议版本: HTTP1.1 0.9/1.0/1.1/2.0
0.9: 这时候的http仅用于传输html数据,并且只有get请求,并且协议格式不完整
1.0: 正式规定了http协议格式,并且增加了多种请求方式,并且支持了不同文件格式的数据流
1.1: 在1.0的基础上增加了更多请求方式和头部描述信息,并且支持长连接
2.0: 采用二进制流传输,并且进行多路复用,并且允许服务端主动推送数据
短连接: http基于在传输tcp实现通信,短连接指的是建立连接,发送一个请求,得到响应后,则关闭连接
长连接: 一次连接可以发送多条请求
头部:描述本次请求的关键字段信息,由key-val形式的键值对组成,并且每个键值对以\r\n作为结尾
Connection- -控制长短连接, Cache-control - -缓存控制, User-Agent - -客户端属性, Accpet - -描述自己所能接收的数据属性, Content-length - - 描述正文长度, Content-Type - -描述符正文数据类型, Cookie
Cookie: 早期http是短连接通信,是一个无状态协议,不会保存客户端状态,每次访问都需要进行登录,因此引入Cookie保存客户端状态。 Cookie中可以带有一些信息,持续在通信中描述客户端的通信状态,但是不够安全
空行:间隔头部于正文,\r\n 接收http数据的时候,当连续接收两个\r\n\r\n(\r\n\r\n)的时候,则认为头部信息到此结束
先获取完整头部,通过头部中的Content-Length获取正文长度,然后获取指定
正文:提交服务端的数据
响应
首行: HTTP/1.1 303 See other, 包含3个要素,以空格进行间隔,以\r\n作为结尾
协议版本: 0.9/1.0/.1.1/2.0
响应状态码: 表示本次的请求服务端做出的响应
1xx:描述信息
2xx:表示本次请求正确处理完毕
3xx:重定向 - -你请求的资源在另一个位置,要求客户端重新请求新的位置; 301 - 永久 302 - 临时
4xx:表示客户端请求错误; 400- -请求错误/ 404 - -表示请求的资源不存在
5xx:表示服务端错误; 500- -服务器内部错误/ 502- -代理请求失败/无效响应/504- -代理请求超时
状态码描述:对状态码的描述信息,可以是官方文档对应描述,也可以自定义
头部:关于本次响应的一些关键字段描述信息,以key-val键值对组成,以\r\n作为结尾
Transfer-Encoding:实体正文的传输方式
Expires:缓存过期时间
Location:重定向的新位置
Set-Cookie:服务端通过Set-Cookie向客户端传递信息,会被保存在客户端浏览器的Cookie文件中
Cookie:客户端通过Cookie文件读取数据通过cookie向服务端传递信息
Session:会话,服务端会为每个登录的客户端创建会话,在服务端描述一些信息(客户端身份信息,状态信息),保存在服务端,可以通过Cookie将session id返回给客户端,客户端每次通信都会通过cookie带又自己的session id;
计算机网络--应用层相关推荐
- 考研—计算机网络—应用层
考研-计算机网络-应用层 两种模型--网络应用模型 1)客户/服务器模型 服务器是一个总是打开的主机,用来服务客户机. 客户是服务请求方,服务器是服务提供方. C/S模式应用包括:Web.文件传输FT ...
- 基础知识-计算机网络-应用层
基础知识-计算机网络-应用层 1 应用层协议原理 1.1 网络应用程序体系结构 1.2 进程通信 1.3 应用层协议 1.4应用程序所需要的服务(运输服务) 1.5 因特网运输协议提供的服务 2 We ...
- 计算机网络--应用层Web简单介绍
计算机网络养成:第六天 内容导航 计算机网络养成:第六天 学习内容 Web and HTTP URL (Uniform Resource Locator)统一资源定位符 HTTP概况[hype tex ...
- 计算机网络应用层课后习题练习(一)
计算机网络应用层课后习题练习 应用层知识点概览 课后练习(一) 应用层知识点概览 域名系统DNS 文件传送协议FTP和TFTP 远程终端协议TELNET 万维网WWW 电子邮件SMTP/POP3/IM ...
- 计算机网络 | 应用层 :HTTP协议详解
目录 自定制协议 HTTP协议 URL HTTP协议的特点 HTTP协议版本 HTTP协议格式 首行 请求首行 请求方法 响应首行 响应状态码 头部 Cookie与Session 空行 正文 请求正文 ...
- 计算机网络 - 应用层
文章目录 1 网络应用模型 1.1 概述 1.2 网络应用模型 1.2.1 客户/服务器模型(Client/Server) 1.2.2 P2P模型(Peer-to-Peer) 2 域名系统DNS 2. ...
- 万字+图片解析计算机网络应用层
1. 应用层概述 (1).前情回顾 物理层:解决使用何种信号来传输比特的问题 数据链路层:解决分组在一个网络(或一段链路)上传输的问题 网络层:解决分组在多个网络上传输(路由)问题 运输层:解决进程之 ...
- 计算机网络应用层(二):DNS协议详解
DNS协议详解 前言 DNS协议概述 DNS工作原理 DNS缓存 DNS记录和报文 资源记录 DNS报文 总结 前言 DNS是计算机网络中应用层的一个协议,可能很多同学碰到过DNS被劫持的情况,我们现 ...
- 计算机网络应用层论文,计算机网络实验报告应用层.doc
计算机网络实验报告应用层.doc 沈 阳 工 程 学 院 学 生 实 验 报 告 (课程名称:计算机网络) 实验题目: 应用层各种服务的配置 班 级 学 号 单超杰 地 点 F608 指导教师 费雅洁 ...
- 计算机网络应用层报告,计算机网络实验报告应用层
计算机网络实验报告应用层 沈 阳 工 程 学 院 学 生 实 验 报 告 (课程名称:计算机网络) 实验题目: 应用层各种服务的配置 班 级 网本111班 学 号 06 姓 名 单超杰 地 点 F60 ...
最新文章
- 全面认识网络诊断命令功能与参数——netsh diagnostic命令
- 你有没有扔过一枚硬币选择正反面?
- response.getWriter().write 传递中文乱码
- 一、查看MVC4还是MVC5
- SQL语句快速回忆——SQL基础知识点汇总
- .NET打包工具怎么注册 .dll文件??
- 中职计算机基础课堂传统教学,中职计算机基础知识教学创新
- 02 | 高性能 IO 模型:为什么单线程 Redis 能那么快?
- 华为鸿蒙harmonyos-面向全场,华为正式官宣鸿蒙手机版相约6月2日,EMUI官博更名为HarmonyOS...
- 系出名门Android(7) - 控件(View)之ZoomControls, Include, VideoView, WebView, RatingBar, Tab
- Win32ASM学习[11]:逻辑运算
- UIImage 裁剪图片和等比列缩放图片
- scala 学习笔记--集合
- GCC的__attribute__ ((constructor))和__attribute__ ((destructor))
- java自动排序_java中的自动排序集合 ---- 20160809
- 计算机软件水平考试中级题目,计算机软考中级考试试题及答案
- 多个图片合成PDF文件
- 站在巨人的肩膀上--邵泓鑫
- 团队作业1——团队展示
- 苹果手机显示无法与服务器建立安全连接,苹果手机那个safari浏览器无法与访问器建立安全链接是什么意思...
热门文章
- 计算机论文未来展望,从计算机的进化引发对未来的展望论文
- 高速串口通信稳定_长虹配套珠峰5G通信装备 保障直播信号稳定高速传输
- 大数据架构师+精英必备技能
- ORA-01157: cannot identify/lock data file n 故障一例
- PageHelper PageInfo 手动List分页
- 谷歌流计算论文streaming 101: 批处理之上的世界(一)
- 柔性化生产与ERP等软件定义
- [深度学习] magic point
- MFC 国际化(多国语言)
- 嵌入式五种重要概念串口、COM口、TTL、RS232、RS485的区别详解