HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是一个简单的请求-响应协议,属于应用层协议。
它通常使用TCP连接传送,保证了数据的可靠传输,但是HTTP协议 本身是无连接的 ,虽然HTTP使用了TCP连接,
但是通信双方在交换HTTP报文之前不需要先建立HTTP连接。
HTTP协议是 无状态的(stateless) ,也就是说,同一个客户第二次访问同一个服务器上的资源时,服务器的
响应与第一次被访问时的相同,因为服务器并不知道曾经访问过得这个客户。HTTP协议的无状态性简化了服务器的设
计,使服务器更容易支持大量并发的HTTP请求。
一次HTTP请求发生时,首先要和服务器建立TCP连接。TCP的建链过程需要三次握手。当TCP建链的三次握手报文的前两个
报文完成后,客户端就把HTTP的请求报文,作为TCP建链过程三次握手中的第三个报文发送给服务器(因为第三个握手
报文是一个ACK,TCP规定ACK是可以携带数据的)。服务器收到HTTP请求报文后,处理完成再把响应报文返回给客户端。
如下图所示:
从上面可以看出,一个HTTP请求所需要的事件是2倍往返时间RTT(一个RTT用于TCP建链,连一个RTT用于请求和接收响应)。
链接类型分为以下两种:
处理方式分为以下两种:
下面通过链接类型+处理方式,分别描述4种不同类型的处理情况。以请求一个页面,页面中包含三个图片,一共四个请求为例说明:
每个请求都需要串行的建立一个新的链接,那么建链时延和慢启动时延就会叠加起来,如下图所示:
缺点:时延过高,带宽利用率低
同样四个请求,并行链接就可以先请求页面,然后并行的请求三个图片,这样建链时延和慢启动时延就是重叠的,
减少了总时延,也可以充分利用带宽资源。 如下图所示:
缺点:
持久连接串行处理相对于非持久连接串行处理就节约了每次建链的时延和慢开始的时延。如下图所示:
即节约了建链和慢启动的时延,又并行增加了传输效率。如下图所示:
正常情况下浏览器是会创建多条持久链接,然后每个持久连接上都可以并行处理,这样效率是最高的。
HTTP1.0默认使用的是非持久连接,后续添加了Connection:Keep-Alive首部来支持持久连接。
HTTP1.1则是默认持久连接。通过Connection:close首部来关闭连接。
HTTP有两类报文:
HTTP的报文格式如下图所示:
TCP和UDP之间的区别
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快
现在Inter上流行的协议是TCP/IP协议,该协议中对低于1024的端口都有确切的定义,他们对应着Inter上一些常见的服务。这些常见的服务可以分为使用TCP端口(面向连接)和使用UDP端口(面向无连接)两种。
说到TCP和UDP,首先要明白“连接”和“无连接”的含义,他们的关系可以用一个形象地比喻来说明,就是打电话和写信。两个人如果要通话,首先要建立连接——即打电话时的拨号,等待响应后——即接听电话后,才能相互传递信息,最后还要断开连接——即挂电话。写信就比较简单了,填写好收信人的地址后将信投入邮筒,收信人就可以收到了。从这个分析可以看出,建立连接可以在需要痛心地双方建立一个传递信息的通道,在发送方发送请求连接信息接收方响应后,由于是在接受方响应后才开始传递信息,而且是在一个通道中传送,因此接受方能比较完整地收到发送方发出的信息,即信息传递的可靠性比较高。但也正因为需要建立连接,使资源开销加大(在建立连接前必须等待接受方响应,传输信息过程中必须确认信息是否传到及断开连接时发出相应的信号等),独占一个通道,在断开连接钱不能建立另一个连接,即两人在通话过程中第三方不能打入电话。而无连接是一开始就发送信息(严格说来,这是没有开始、结束的),只是一次性的传递,是先不需要接受方的响应,因而在一定程度上也无法保证信息传递的可靠性了,就像写信一样,我们只是将信寄出去,却不能保证收信人一定可以收到。
TCP是面向连接的,有比较高的可靠性,
一些要求比较高的服务一般使用这个协议,如FTP、Tel、SMTP、HTTP、POP3等,而UDP是面向无连接的,使用这个协议的常见服务有DNS、SNMP、QQ等。对于QQ必须另外说明一下,QQ2003以前是只使用UDP协议的,其服务器使用8000端口,侦听是否有信息传来,客户端使用4000端口,向外发送信息(这也就不难理解在一般的显IP的QQ版本中显示好友的IP地址信息中端口常为4000或其后续端口的原因了),即QQ程序既接受服务又提供服务,在以后的QQ版本中也支持使用TCP协议了。
tcp/ip和udp之间的区别udp 是无连接的传输协议,不用三次握手,把数据包发出去就不管了,不管你是否能接收到
TCP需要三次握手建立连接,使用滑动窗口来确认数据包是否被对方接收到了
TCP和UDP之间的区别和联系1)TCP是面向连接的传输控制协议,而UDP提供了无连接的数据报服务;(2)TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;(3)也正因为以上特征,UDP具有较好的实时性,工作效率较TCP协议高;(4)UDP段结构比TCP的段结构简单,因此网络开销也小。
TCP(Tran *** ission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。 UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去! UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包(如图2所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。
TCP和UDP的传输过程以及二者之间的区别TCP(Tran *** ission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:
(1)第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
(2)第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
(3)第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
UDP
(1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
TCP与UDP的区别:
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
RTP UDP TCP之间的联系RTP 可也说是介于传输层和应用层之间的,默认是UDP作为传输协议
UDP 无连接,不保证包的顺序和质量,适用于实时数据
TCP 有连接,三次握手,保证顺序质量
找本书看看,这么问不是办法
work和job之间的区别
work,job这两个词虽然都有“工作”的意思,但却是近义词。
work 作名词,有体力或脑力劳动的意思(在这一意义上的同义词有labour, toil),又有作为职业概念的“工作”的意思(在这一意义上的同义词有employment, oupation, calling)。
I like garden too, but I don't like hard work.
我也喜欢花园,但是我不喜欢辛苦的劳动。
You have done a day's work in three hours.
你在三个小时内完成了一天的工作。
The children were at school, my hu *** and was at work and the house was quiet.
孩子们上学去了,我丈夫去上班了,所以家里很安静。
Work on it had begun before my sister left.
这座房子的工程在我姐姐离开之前就已经开始了。
He is finding his new work far more exciting.
他现在发觉自己的新工作更加令人兴奋。
He is now out of work.
他现在失业了。
job 作为“工作”解,其实有两层含义:一个是“干活”的“活”,一个作为职业的“事”。job作“干活”的“活”解时的同义词有task, duty, assignment等;job作为职业的“事”解时有如下的同义词:position, place, situation, post等。
When you start a job, you must stick to it.
一旦你开始了一件工作,他就得持之以恒。
It was his job to repair bicycles and at that time he used to work fourteen hours a day.
修理自行车就是他的话,而且常常是一天要干14个小时。
I'm not going to wash the dishes, that's your job.
我不洗那些盘子,那是你的事。
He then asked me how my brother was and whether I liked my new job in London.
然后,他问我的兄弟可好,又问我是否喜欢在伦敦的新工作。
Alf's wife has never discovered that she married a dustman and she never will, for Alf has just found another job.
阿尔夫的妻子从来没有发现自己嫁给了一个清洁工,而且她再也不能发现自己丈夫是清洁工了,因为阿尔夫刚刚找到一种别的工作。
He is out of a job.
他现在失业了。
注:用英语表达“失业”,work和job这两个词都可以用,但是如果用job就必须用不定冠词a,如果用work,则不用不定冠词。
work,labour,toil这组名词的一般含义为“工作”或“劳动”。
work 可以指体力劳动、脑力劳动或机器干的活。从最广义上讲,它可以指大自然活动的任何结果。
I like gardens too, but I do not like hard work.
我也喜欢花园,但是我不喜欢艰苦的劳动。
But in an old man who has known human joys and sorrows, and has achieved whatever work it was in him to do, the fear of death is somewhat abject and ignoble.
然而,作为一个老年人,他经历过人生的欢乐和忧伤,而且完成了他份内要做的一切工作,怕死就有点儿卑鄙和不光彩了。
labour 指人类体力、脑力的劳动,但更强调吃力、费劲或努力。此外,labour创造人类赖以生存的物质和精神财富。
Labour is doing what we must.
劳动就是做必需做的事。
The majority of men there earn their living by manual labour.
那里绝大多数人靠体力劳动谋生。
The puter is a typical labour-saving machine.
计算机是一种典型的节省劳动力的机器。
toil 强调长时间的而且令人感到非常疲劳的辛苦劳动,但未必一概指体力劳动。
The farmer's toil was rewarded with good crops.
那个农夫以辛勤的劳动换得了好收成。
work,employment,oupation,calling,pursuit这组同义词的一般概念是“职业”。work是最普通的词,没有什么特色,似乎可以代替本组词中的任何一个。
Even so, people are going to find it difficult to get to work.
即使如此,人们将仍然感到上班很难。
He is finding his new work far more exciting.
他现在觉得自己的新工作更加令人兴奋。
employment所表示的“职业”总含有为了谋生或挣工资、薪水而被雇用的意思,雇主可以是工业、企业或任何行业的老板,也可以是主仆概念的主人
The workman went from town to town, working when he could find employment.
那个工人从一个城镇流浪到另一个城镇,找到职业时就干点活。
oupation可以表示employment的含义,但employment不能表示oupation的一切含义,因为oupation所表示的“职业”可以不含有为挣工资、薪水而工作的意思,也不包含雇用的意思。例如:老板的oupation是为了利润而工作。此外,oupation所指的“职业”可以是简单劳动也可以是复杂劳动
He wanted to look for oupation suited to his abilities.
他想找个适合自己才能的职业
He is a factory director by oupation.
他的职业是做厂长。
calling和oupation的差异仅在于:calling是应上帝的召唤而去工作,也可以是出于本人的天性或情趣而去工作。pursuit与oupation的含义最接近,但偏向于从事trade, craft和profession等“行业”的人的“职业”。
Teaching is an honourable calling.
教书是光荣的职业。
His calling is that of a doctor.
他的职业是行医。
What's your pursuit?
你是做什么工作的?
He has been engaged in literary pursuits.
他从事了文学生涯。
guarantee和warranty之间的区别Warranty是保证,在一般的商品购买合同里会有保证条款(warranty clauses),内容一般是商品出厂时是保证合格的,否则在多少天内可以退货更换和之后多少时间内提供保修等的条款. 所以warranty clauses内有提到保修,但保修不是warranty.
Guarantee是担保. 和warranty在法律上是不同.
如果warranty内提到的事发生了,提供warranty那方就需根据条款补救,如更换或保修.
但guarantee是担保所提到的事会或不会发生. 如果guarantee的事发生了,那guarantee那方就违约. 你把它修理好或换个好的给我我也可以不要并要求退款.
circrna和ncrna之间的区别1、starBase 一个高通量实验数据CLIP-Seq(或称为HITS-CLIP,PAR-CLIP,iCLIP)和mRNA降解组测序数据支持的microRNA靶标数据库,包含了miRNA-mRNA,miRNA-lncRNA,miRNA-circRNA,miRNA-ceRNA 和RNA-protein等的调控关系。
整合和构建多个流行的靶标。
TLC和MLC之间的区别MLC = Multi-Level Cell,即2bit/cell,速度一般寿命一般,价格一般,约3000---10000次擦写寿命
TLC = Trinary-Level Cell,即3bit/cell,也有Flash厂家叫8LC,速度慢寿命短,价格便宜,约500-1000次擦写寿命。
cosplay和RPG之间的区别?cosplay 是真人,打扮成虚拟人物的形象,真刀真枪地演出哦。
RPG是虚拟的,你在游戏里扮演一个角色打怪完成任务什么的,说穿了就是在动鼠标动键盘啦。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)