网络——HTTP协议即简单实现

应用层的功能:

应用层负责应用程序之间的沟通来制定协议,通俗的来讲,就是应用层会借助TCP,UDP协议在各种各样的程序之间传递数据(邮件,文件等)这时候像应用层协议就可以规定这些数据的格式要满足什么样的。

常见的应用层协议:

基于UDP的应用层协议:

  • DHCP:动态主机配置协议
  • DNS:域名解析协议

基于TCP的应用层协议:

  • SMTP:简单电子邮件传输协议
  • FTP:文件传输协议
  • TELNET:网络远程访问协议
  • HTTP:超文本传输协议

HTTP协议

  • HTTP叫超文本传输协议,基于请求/响应模式,是用于万维网(WWW)服务器传输超文本到本地浏览器的传送协议
  • HTTP协议是基于TCP/IP协议栈的应用层协议,主要规范服务器和客户端之间的通信格式,默认端口号是80
  • HTTP协议工作于服务器-客户端架构,浏览器作为HTTP客户端通过URL向HTTP服务器(web)发送请求,web服务器接根据接收到的请求,向客户端响应相应的信息

HTTP过渡到客户端与服务器的交互:

  1. 当客户端执行网络请求时,会从URL地址中解析出URL的主机名,并将主机地址转化成IP地址
  2. 从URL解析出服务器使用的端口号
  3. 客户端用TCP连接服务器
  4. 连接成功后获得输出流,并将数据以报文的形式传递给服务器
  5. 当服务器接受到数据之后,进行判断和解析码,并回送一条响应报文
  6. 客户端从输入流中获取报文,并解析
  7. 最后关闭网络的连接

HTTP的特点:

  1. 简单快捷:客户向服务器请求,只需要传送请求方法和路径。请求方法一般有:GET,HEAD,POST。每种方法规定了客户于服务器联系的类型不同。由于HTTP简单,使得HTTP服务器的程序规模小,因而通信速度快
  2. 灵活:HTTP传输任意类型的数据对象
  3. 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输事件
  4. 无状态:无状态是指协议对事物处理没有记忆能力,缺少状态意味着,如果后面需要前面的信息则需要重传,这样可能导致每次传送的数量巨大,另一方面,服务器不需要先前的信息时,它应答的速度就会特别快
  5. 支持客户/服务器模式

HTTP请求:

  • 首行:方法+url+版本号
  • Header:请求的属性,冒号分割的键值对,每组属性之间使用\n分隔,遇到空行表示Header部分结束
  • Body:空行后面都是Body的内容,Body允许为空字符串,如果Body存在,则Header中会有一个Content—Length属性来标识Body的长度

HTTP常见的请求方式:

  1. GET请求:

作用:获取服务器的某个资源,或者说是告诉服务器,我想查询的信息

特点:明文传输(直接传送给服务器的数据写在URL上)

常用:跳转到另一个网站,网站名就是GET传输,然后向服务器请求获取该网站

     2. POST请求:

作用:传输实体主体,一般用来提交HTML表单时使用,服务器处理这些数据

特点:表单上传(写入数据,不显示在URL上)

常用:注册用户名,密码,传送给服务器处理

      3.PUT请求:

作用:传输文件,向服务器写入资源,在服务器创建一个文本,然后将Client传输数据给server,不过一个是写在URL上,一个写在from表单上,然后server端根据这些上传的数据进行处理

HTTP响应:

首行:版本号+状态码+状态码解释

HTTP状态码:

  • 1XX:信息性状态码,接受的请求正在处理
  • 2XX:成功状态码,请求正常处理完毕
  • 3XX:重定向状态码,需要进行附加操作以完成请求
  • 4XX:客户端错误状态码,服务器无法处理请求
  • 5XX:服务器错误状态吗,服务器处理请求出错
  • 常见的错误码:200(ok),404(Not Found),403(Forbidden),302(Redirect,重定向),504(Bad Gatewa)

HTTP常见Header

  • Content—Type:数据类型(text/html)
  • Conrent—Length:Body的长度
  • Host:客户端告知服务器,所请求的资源在哪个主机的哪个端口
  • User—Agent:声明用户的操作系统和浏览器版本信息

认识URL

URL:统一资源定位符,我们平时说的“网址”其实就是指URL,具有全球唯一性,它表示一个真正存在的资源。一个完整的URL包括协议类型,主机类型,路径和文件名

实现简单版本的HTTP服务器

此服务器中构造了响应,打印“hello world”

猜你喜欢

转载自blog.csdn.net/audience_fzn/article/details/81266904
今日推荐