一、TCP/IP协议

TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。

特点:

(1)TCP/IP协议不依赖于任何特定的计算机硬件或操作系统,提供开放的协议标准,即使不考虑Internet,TCP/IP协议也获得了广泛的支持。所以TCP/IP协议成为一种联合各种硬件和软件的实用系统。

(2)TCP/IP协议并不依赖于特定的网络传输硬件,所以TCP/IP协议能够集成各种各样的网络。用户能够使用以太网(Ethernet)、令牌环网(Token Ring Network)、拨号线路(Dial-up line)、X.25网以及所有的网络传输硬件。

(3)统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有唯一的地址

(4)标准化的高层协议,可以提供多种可靠的用户服务。

从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。

二、OSI的七层参考模型

OSI(Open System Interconnect)是传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

三、HTTP请求响应机制

Internate的基本协议是TCP/IP(传输控制协议和网际协议)。而目前使用的FTP,HTTP都是建立在TCP/IP上的应用层协议。不同的协议对应不同的应用。而HTTP协议是Web应用所使用的主要协议。

HTTP协议基于请求响应模式,客户端向服务器发送一个请求,请求头包含请求的方法,URI,协议版本以及包含请求修饰符,客户端信息和内容的类似MIME的消息结果。服务器则以一个状态行为作为响应,相应的内容包括消息协议的版本,成功或错误编码加上包含服务器信息,实体元信息以及可能的实体内容。

HTTP协议是无状态协议,依赖瞬间或者近乎瞬间的请求处理。请求信息被立即发送,理想的情况是没有延迟地进行处理;不过,延迟还是客观存在的。HTTP协议有一种内置机制,在消息的传递时间上有一定的灵活性:超时机制。一个超时就是客户端等待请求消息返回信息的最长时间。
HTTP协议的请求和响应消息如果没有发送并传递成功的话,不保存任何已传递的信息。比如,单击“提交”按牛,如果表单没有发出去,则浏览器将会显示错误信息页,并且返回空白表单。虽然没有提交成功,但是HTTP不保存任何表单信息。

由于HTTP协议的上述特点,通常,客户端每次需要更新信息都必须重新向服务器发起请求,客户端接受到服务器端返回的信息后再刷新屏幕内容。
基于HTTP协议的客户端/服务器请求响应 机制的信息交换过程包含下面几个步骤:

1.建立连接:客户端与服务器建立TCP连接
2.发送请求:打开一个连接后,客户端把请求信息发送到服务器的相应端口上,完成请求动作提交。
3.发送响应:服务器在处理完客户端请求之后,要向客户端发送响应消息。
4.关闭连接:客户端和服务器端都可以关闭套接字来结束TCP/IP对话。

HTTP的工作机制就是请求消息和响应消息。嘴尖但的情况是一个拥护输入一个站点地址,发送一个请求。之后,浏览器返回所请求的页面,这个页面可能是最简单的HTML页面,也可能是动态编译后的页面。如果这个页面有错或者不存在,则WEB服务器则将发送一个错误的信息页面。

WEB服务器发送错误信息页是因为HTTP没有内置的处理机制,是无状态的,传输协议不记忆从一个请求消息到另一个请求消息的任何信息(备注:意思是说,当发送一个请求消息发生错误,由于HTTP是无状态的,所以不能将这个发生错误的请求消息传递给另一个请求消息进行处理,也是请求消息不能转弯,必须一次传到并得到处理) 这个特点可以保证WEB的一致性。但是,用户常常需要记忆一些设置内容或者浏览过程,这就需要在web页面或者URL中携带各种参数及值。HTTP请求有多种样式。其中常用的有GET,POST,HEAD请求。

5.状态管理

正如前面所提到的,HTTP协议是无状态的,不能保存每次提交的信息,即当服务器返回与请求相对应的应答之后,这次事务的所有信息就都丢掉了。如果用户发来一个新的请求,服务器也无法知道它是否与上次的请求有联系。

对于简单的静态HTML文件来说,这种特性是很适用,但是对于那些需要多次提交请求才能完成的WEB操作比如购物车来说,就成了问题了。服务器端的WEB应用程序必须允许用户通过多个步骤才能完成全部的物品采购。在这种情况下,应用程序必须跟踪由同一个浏览器发送的多哥请求所提供的信息,即记住用户的交易状态。

通常,采用两种方法来解决这个问题。一个是每次应答都返回完整的状态,让浏览器把它作为下次请求的一部分再发送过来。二是把状态保存在服务器的某个地方,只发送回一个标识符,浏览器在下次提交中把这个标识符发送过来;这样,就可以定位存贮在服务器上的状态信息了。

在这两种方法中,信息可以通过下列三种方法中的一种发送给浏览器:
1.作为COOKIE; 但是不是所有浏览器都支持,而且用户也可以禁用COOKIE
2.附加在主体的URL中
2.作为隐藏域嵌入HTML表单中;

当表但提交时,浏览器将作为常规HTTP参数的方式将这些信息返回服务器,当状态信息被注入时,它将作为请求URL的一部分传诵到服务器,但是这在浏览器和服务器之间来回传递信息的效率较低,所以一般还是选择把信息保存在服务器中,即上面两种方法中的第二种。在浏览器和服务器之间来回传递一个标识符,这就是所谓的会话(session)跟踪。来自浏览器的所有包含同一个标识符(这里是SESSIONID)的请求同属于一个会话。

会话的有效期直到它被显式地终止为止,或者当拥护在异端时间内没有动作,由服务器自动设置为过期。目前没有办法通知服务器用户已经关闭浏览器,因为在浏览器和服务器之间没有一个持久的连接,并且浏览器关闭时也不向服务器发送信息。同时,关闭浏览器通常意味着会话ID丢失;COOKIE将国旗,或者注入了信息的URL将不能再使用。所以当用户再次打开浏览器的时候,服务器无法将心得请求与以前的会话联系起来,饿睿智能创建一个新的会话。然而,所有与前一个会话有关的数据依然存放在服务器上,直到会话过期被清除为止。

TCP/IP协议,,OSI的七层参考模型,HTTP请求响应机制的更多相关文章

  1. TCP/IP协议族之链路层(二)

    TCP/IP学习记录,如有错误请指正,谢谢!!! TCP/IP协议族之链路层(二) 链路层是最底层协议,主要有三个目的: 1. 为IP模块发送和接收IP数据报 2. 为ARP模块发送ARP请求和接收A ...

  2. Android网络编程系列 一 TCP/IP协议族之链路层

    这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 数据链路层有三个目的: 为IP模块发送和 接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RA ...

  3. Android网络编程系列 一 TCP/IP协议族之网际层

    这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 网际层包括:IP.ICMP.IGMP 以及处在网际层实际工作在链路层的 ARP 和 RARP等等协议. 1.IP协议 互联网 ...

  4. TCP/IP 协议 OSI七层协议

    ------------------你来自何处并不重要,重要的是你要去往何方,人生最重要的不是所站的位置,而是所去的方向.人只要不失去方向,就永远不会失去自己! day 27 # # -------- ...

  5. TCP/IP协议学习(六) 链路层详解

    学习知识很简单,但坚持不懈却又是如此的困难,即使一直对自己说"努力,不能停下"的我也慢慢懈怠了... 闲话不多说,本篇将讲述TCP/IP协议栈的链路层.在本系列第一篇我讲到,TCP ...

  6. Android网络编程系列 一 TCP/IP协议族之传输层

    这篇借鉴的文章主要是用于后续文章知识点的扩散,在此特作备份和扩散学习交流. 传输层中有TCP协议与UDP协议. 1.UDP介绍 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,U ...

  7. TCP/IP协议的四个层及作用

  8. TCP/IP协议 (图解+秒懂+史上最全)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  9. TCP/IP模型及OSI七层参考模型各层的功能和主要协议

    注:网络体系结构是分层的体系结构,学术派标准OSI参考模型有七层,而工业标准TCP/IP模型有四层.后者成为了事实上的标准,在介绍时通常分为5层来叙述但应注意TCP/IP模型实际上只有四层. 1.TC ...

随机推荐

  1. C#基础-->cookie和session

    关于cookie和session cookie 1:一个cookie中可以存放的数据最大在4KB左右 2:cookie存放于客户端 3:cookie分为两种  一种是会话cookie  一种是持久co ...

  2. NIO 源码分析(04) 从 SelectorProvider 看 JDK SPI 机制

    目录 一.SelectorProvider SPI 二.SelectorProvider 加载过程 2.1 SelectorProvider 加载 2.2 Windows 下 DefaultSelec ...

  3. Spring事务详细解释

    前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为.事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为.这是Spring ...

  4. CF#537 C. Creative Snap /// DFS

    题目大意: 给定n k A B为位置长度 复仇者个数 两种花费 在一段为1~2^n的位置中 某些位置存在一些复仇者 求消灭所有复仇者的最小花费 对一段位置可以有两种处理方式 1.若该段长度至少为2 可 ...

  5. Match & Catch CodeForces - 427D 后缀自动机水题

    题意: 给出两个字符串a,b,求一个字符串,这个字符串是a和b的子串, 且只在a,b中出现一次,要求输出这个字符串的最小长度. 题解: 将a串放入后缀自动机中,然后记录一下每个节点对应的子串出现的次数 ...

  6. 多个串的最长公共子串 SPOJ - LCS2 后缀自动机

    题意: 求多个串的最长公共子串 这里用的是O(n)的后缀自动机写法 我后缀数组的专题有nlog(n)写法的 题解: 对于其中的一个串建立后缀自动机 然后对于后缀自动机上面的每一个节点求出每一个节点最长 ...

  7. react组件中的方法?

    SetState 设置状态 ReplaceState 替换状态 setProps设置属性 replacerProps替换属性 forceUpdate 强制更新 findDOMNode获取DOM节点 i ...

  8. pytest--fixture之参数化

    场景:测试用例执行时,有的用例需要登陆才能执行,有些用例 不需要登陆.setup和teardown无法满足.fixture可以.默认 scope(范围)function • 步骤: 1. 导入pyte ...

  9. webapi 给自己挖的坑

    这次做项目,负责开发web api. 自己给自己挖了个坑.在所有的api接口前面都加上一个static . 结果检查路由配置.代码等等都找不到问题所在. 最后在一个同事的提醒下,原来是static给惹 ...

  10. NCM格式转换MP3格式

    首先下载软件: 百度网盘下载地址:https://pan.baidu.com/s/1I_HUQGBnOq23Zdm-NgbnqA 提取码:u4m5 下载完毕直接打开就好 添加NCM文件 点击开始转换 ...