一、 HTTP协议是什么?

我们在浏览器的地址栏里输入的网站地址叫做 URL(UniformResourceLocator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。因此,在我们认识HTTP之前,有必要先弄清楚URL的组成 , 例如: http://www.microsoft.com/china/index.htm.它的含义如下:     1.http://:代表超文本传输协议,通知microsoft.com服务器显示Web页,通常不用输入     2.www:代表一个 Web(万维网)服务器;     3.Microsoft.com/:这是装有网页的服务器的域名,或站点服务器的名称;     4.China/:为该服务器上的子目录,就好像我们的文件夹;     5.Index.htm:index.htm是文件夹中的一个HTML文件(网页) 。     我们知道,Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层 (Applicationlayer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。     HTTP 协议(HypertextTransferProtocol,超文本传输协议) 是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形) 等。这就是你为什么在浏览器中看到的网页地址都是以 “http://”开头的原因。     自WWW诞生以来,一个多姿多彩的资讯和虚拟的世界便出现在我们眼前,可是我们怎么能够更加容易地找到我们需要的资讯呢?当决定使用超文本作为WWW文档的标准格式后,于是在1990年,科学家们立即制定了能够快速查找这些超文本文档的协议,即HTTP协议。经过几年的使用与发展,得到不断的完善和扩展,目前在WWW中使用的是 HTTP/1.0的第六版。

二、 HTTP是怎样工作的?

既然我们明白了URL的构成,那么HTTP是怎么工作呢?我们接下来就要讨论这个问题。     由于HTTP协议是基于请求/响应范式的(相当于客户机/服务器 )。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符 (URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。     许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求.最简单的情况可能是在用户代理和服务器之间通过一个单独的连接来完成。在Internet上,HTTP 通讯通常发生在TCP/IP连接之上。缺省端口是TCP80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。     这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系 (HTTP是通过TCP/IP),当然我们也可以通过传真,只要商家那边也有传真。     以上简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。     在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。基于 HTTP 协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。这就好像上面的例子,我们电话订货的全过程。     其实简单说就是任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用户请求。你的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包.TCP/IP决定了每个数据包的格式。如果事先不告诉你,你可能不会知道信息被分成用于传输和再重新组合起来的许多小块。     也就是说商家除了拥有商品之外,它也有一个职员在接听你的电话,当你打电话的时候,你的声音转换成各种复杂的数据,通过电话线传输到对方的电话机,对方的电话机又把各种复杂的数据转换成声音,使得对方商家的职员能够明白你的请求。这个过程你不需要明白声音是怎么转换成复杂的数据的。
什么是Socket?
    Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP 网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。     Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。
    Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述

转载于:https://www.cnblogs.com/rocket-guo/p/3731120.html

HTTP协议&SOCKET协议相关推荐

  1. 自行控制loadrunner的socket协议性能测试 (转)

    一前言 二任务的提出 三实现方案讨论 四技术要点讲解 如何开始录制一个最简单的收发数据包脚本 写日志文件 一行一行读数据包文件 字符串转换为十六进制数据包 发送自己定义的数据包 接收数据包到自定义缓冲 ...

  2. 网络编程2_网络通讯协议, socket(tcp, udp)

    一. 网络通讯协议     互联网协议的功能: 定义计算机如何接入internet, 以及接入internet的计算机的通信标准     互联网协议按照功能的不同分为osi七层或tcp/ip五层    ...

  3. 网络编程 socket模块 tcp协议 udp协议

    网络基础相关知识 , socket模块 , tcp协议通信代码 , tcp和udp编码流程 网络基础相关知识(1) 架构 C / S 架构: client 客户端 和 server 服务器端 优势:能 ...

  4. 网络协议之:socket协议详解之Datagram Socket

    文章目录 简介 什么是Datagram Socket 使用socat来创建UDP服务 使用ss命令来监控Datagram Sockets 使用nc建立和UDP Socket的连接 总结 简介 上一篇文 ...

  5. 手游-放开那三国socket协议分析

    手游-放开那三国socket协议分析 图文:a4727603 楼主本就是一个偷懒的人,玩游戏最什么的最讨厌了还要一遍遍的刷副本,于是就有了这个破解的过程 刷副本太累,想写个脱机挂自动打副本,背景交代完 ...

  6. Socket协议编程实践

    Socket协议编程实践[分布式计算] Socket之UDP和TCP 文章目录 Socket协议编程实践[分布式计算] 前言 一.什么是Socket 二.为什么要使用Socket 三.套接字 四.实验 ...

  7. socket协议基础知识

    Socket协议的形象描述 socket的英文原义是"孔"或"插座".在这里作为4BDS UNIX的进程通信机制,取后一种意思.socket非常类似于电话插座. ...

  8. 协议 + socket import 和 form xx import *的区别 028

    协议 + socket import 和 form xx import *的区别 028 一 . 网络通信协议(了解) 1 . osi 七层协议 (最好记住 面试会问) 应表会传网数物(应用层 表示层 ...

  9. cs架构接口协议(常用socket协议)与bs架构接口协议(常用http协议)

    Socket原理以及与websocket.http的区别: B/S的系统通常使用http协议进行客户端和服务器商的信息交换,C/S的系统通常使用socket协议进行信息交换 参考:https://bl ...

  10. socket协议介绍

    2019独角兽企业重金招聘Python工程师标准>>> 本文主要讲述了Socket协议脚本的基础知识和编写方法,让大家能够在短时间内快速掌握简单的Socket协议脚本的编写方法. 1 ...

最新文章

  1. Java学习总结:17
  2. 让我们讨论一下变量,以及为什么要在JavaScript中使用它们。
  3. [可行]setoolkit生成木马软件远程控制实例
  4. oracle 对象管理 01_用户及权限
  5. POSIX 线程编程(二)线程建立与终止
  6. python去掉空白行_python去掉空白行的多种实现代码
  7. oem监控mysql_OEM12c 安装配置MySQL Plug-in用来监控MySQL
  8. AcWing 100. 增减序列
  9. iMazing恢复备份的详细教程
  10. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_02 递归_5_综合案例_文件搜索...
  11. 常用的jar包下载网站(自用)
  12. 如何获取Mysql的根目录
  13. 如何从Excel文件创建在线预算报告
  14. processson的文件数量已达到上限如何删除老文件新建新的文件创建流程图
  15. 【机器学习】(十)核支持向量机SVM:make_blobs方法,hstack() 函数
  16. web前端程序员到底值多少钱?
  17. 凌云驭势 亚马逊云科技开启re:Invent中国行
  18. iPhone开发部分总结
  19. 加密资产走过十年,正是区块链技术觉醒的开始
  20. Win10桌面布局-透明剧中任务栏

热门文章

  1. windows下的route print [转]
  2. node.js http-server 搭建本地服务器
  3. 字符串内置方法 第二弹
  4. 【微服务架构】SpringCloud组件和概念介绍
  5. Red Hat Enterprise Linux上配置SQL Server Always On Availability Group
  6. Linux命令行下批量重命名文件名为数字索引编号(0~N.xxx)的方法
  7. 【排序算法】快速排序-迭代方法
  8. 列出选定月份的时间序列
  9. netflix-hystrix-简例
  10. Spring 之autowired