初夏小谈:网络通信基础之应用层

应用层:

应用层程序之间的数据交流,就是程序员自己所写的程序,程序与程序之间进行数据交流时,就需要有一种协议来保证数据的准确传送。协议分为:

 一. 自定制协议:

        序列化:就是数据以指定协议格式进行持久化存储或者是发送端以一种特定格式进行数据传输时的排布方式。

        反序列化:接收端按照指定的协议格式对传输过来的数据进行解析的过程。

 二. 知名协议:http协议(超文本传输协议)

       网址:统一资源定位符简称URL

       最早的URL是由:协议方案名://用户名:密码@服务器地址:端口/资源路径?查询字符串#片段标识符。组成。这种方式由于使得用户信息的安全性大大降低,所以在后面的URL中已经去掉用户名和密码。而常用的协议对应端口也去除。因为它已经众所周知。发展到现在的一种升级版协议即https协议。

        URL编码与解码:针对的是用户提交的数据。用urlencode编码,urldecode解码。

        由于像 / ?: 等这样的自符,会被URL转作另一种特殊意义,所以像这种的字符不可随意出现。如果要出现就必须对其进行转义。

        转义规则:将需要转码的字符转为16进制,之后从右往左取四位,每两位做一位前面加上%。如C++为:C%2B%2B。

        http协议是由三大部分组成即:首行,头部,正文。

        首行又分为:请求首行,和响应首行。

        在请求首行:常用的请求方法有(GET,POST,HEAD,PUT,DELETE) 后面接着 URL 再接着协议的版本号(0.9/1.0/1.1/2)\r\n.

        其中GET是获取资源。POST是传输实体主体。PUT是传输文件,HEAD是获得报文首部。DELETE是删除文件

        请求方法中GET无正文,POST有正文。

         在响应首行:协议版本 状态码(1~~,2~~,3~~,4~~,5~~) 后面跟状态码的描述信息\r\n

        1XX是信息描述码。2XX是对操作成功的状态码。如常见的202(OK)。3XX,状态码是针对重定向的。常见的有302(Redirect,重定向)。4XX,是客户端错误状态码。常见的有404(Not Found),403(Forbidden)。5XX:服务器错误状态码。常见的有:502(Bad Gateway)。

         头部:一个个以:  间隔的键值对,键值对之间以\r\n间隔;每条头部信息都包含特殊含义。

        存在形式:key: val\r\nkey: val\r\n

         通常包括:Content-Length:正文长度。

                           Content-Type:正文数据类型。如果是html类型将直接打开。如果是text格式将下载该文件。

                           Cookie:用于在客户端保存客户的个人相关信息。session:是用户第一次登录时,服务器为用户建立的一次会话,将会话信息保留到session中,session再通过set-Cookie,将会话信息存储在客户端的Cookie中。便于下次用户不再手动登陆,直接提取Cookie相关信息与服务器进行匹配登陆。

                            Referer:用来记录当前页面是从哪一个页面跳转而来的。

                            Transfer-Encoding:数据分块,适用于当不确定数据的长度。

                            Location:与3XX搭配使用,说明重定向的地址。

                            Host:客户端告知服务器,所请求的资源在哪个主机的哪个端口上。

                            User-Agent:声明用户的操作系统和版本信息。

          中间一个空行:\r\n。

          接下来就是正文:接收一个http头部是否完整的评判标准是遇到两个空行(\r\n\r]n).

                                                                                                                                                              珍&源码

全部评论

相关推荐

从输入URL到页面加载发生了什么:总体来说分为以下几个过程: 1.DNS解析 2.TCP连接 3.发送HTTP请求 4.服务器处理请求并返回HTTP报文 5.浏览器解析渲染页面 6.连接结束。简述了一下各个过程的输入输出作用:以下是对从输入 URL 到页面加载各过程的输入、输出或作用的一句话描述:DNS 解析: 输入:用户在浏览器地址栏输入的域名(如 www.example.com)。输出:对应的 IP 地址(如 192.168.1.1)。作用:将易于记忆的域名转换为计算机能够识别和用于网络通信的 IP 地址,以便浏览器与目标服务器建立连接。TCP 连接: 输入:浏览器获得的服务器...
明天不下雨了:参考一下我的说法: 关键要讲出输入网址后涉及的每一个网络协议的工作原理和作用: 涉及到的网络协议: HTTP/HTTPS协议->DNS协议->TCP协议->IP协议->ARP协议 面试参考回答: 第一次访问(本地没有缓存时): 一般我们在浏览器地址栏输入的是一个域名。 浏览器会先解析 URL、解析出域名、资源路径、端口等信息、然后构造 HTTP 请求报文。浏览器新开一个网络线程发起HTTP请求(应用层) 接着进行域名解析、将域名解析为 IP 地址 浏览器会先检查本地缓存(包括浏览器 DNS 缓存、操作系统缓存等)是否已解析过该域名 如果没有、则向本地 DNS 服务器请求解析; 本地服务器查不到会向更上层的 DNS 服务器(根域名服务器->顶级域名服务器->权威域名服务器询问)递归查询 最终返回该域名对应的 IP 地址。(应用层DNS协议)DNS 协议的作用: 将域名转换为 IP 地址。 由于 HTTP 是基于 TCP 传输的、所以在发送 HTTP 请求前、需要进行三次握手、在客户端发送第一次握手的时候、( 浏览器向服务器发送一个SYN(同步)报文、其中包含客户端的初始序列号。TCP头部设置SYN标志位、并指定客户端端口 同时填上目标端口和源端口的信息。源端口是浏览器随机生成的、目标端口要看是 HTTP 还是 HTTPS、如果是 HTTP 默认目标端口是 80、如果是 HTTPS 默认是 443。(传输层) 然后到网络层:涉及到(IP协议) 会将TCP报文封装成IP数据包、添加IP头部,包含源IP地址(浏览器)和目标IP地址(服务器)。IP 协议的作用: 提供无连接的、不可靠的数据包传输服务。 然后到数据链路层、会通过 ARP 协议、获取目标的路由器的 MAC 地址、然后会加上 MAC 头、填上目标 MAC 地址和源 MAC 地址。 然后到物理层之后、直接把数据包、转发给路由器、路由器再通过下一跳、最终找到目标服务器、然后目标服务器收到客户的 SYN 报文后,会响应第二次握手。 当双方都完成三次握手后、如果是 HTTP 协议、客户端就会将 HTTP 请求就会发送给目标服务器。如果是 HTTPS 协议、客户端还要和服务端进行 TLS 四次握手之后、客户端才会将 HTTP 报文发送给目标服务器。 目标服务器收到 HTTP 请求消息后、就返回 HTTP 响应消息、浏览器会对响应消息进行解析渲染、呈现给用户
点赞 评论 收藏
分享
no_work_no_life:深圳,充电宝,盲猜anker
点赞 评论 收藏
分享
被普调的六边形战士很高大:项目经历貌似和专业或者求职方向没大关系?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务