精华内容
下载资源
问答
  • http tcp udp之间的关系区别

    千次阅读 2018-07-22 18:22:44
    TCP UDP HTTP 三者的关系: TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。 在应用层有...

    TCP UDP HTTP 三者的关系:

    TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。

    在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。

    在传输层中有TCP协议与UDP协议。

    在应用层有HTTP、FTP、TELNET、SMTP、DNS等协议。

     

    TCP  传送控制协议(Transmission Control Protocol):

      TCP是传输层的一个协议,基于IP协议,用来传输类似HTTP的信息。如果把IP协议类比为一个“公路”的话,那TCP协议可以看成是在公路上行驶的“卡车”。TCP协议是面向连接的协议,通过三次握手机制,尽量保证连接的可靠性。tcp的链接需要进行三次握手,释放连接需要四次挥手。

     

    UDP 用户数据报协议 (User Datagram Protocol) :

      UDP也是传输层的一个协议。但是与TCP不同的是,UDP不是面向连接的,并不保证传输的可靠性,没有TCP的建立连接的三次握手机制,对于传输效率上面有了提升。

    个人理解:

      这个就比较简单粗暴了,A要给B传数据,然后就直接传了。

     

    HTTP 超文本传输协议(HyperText Transfer Protocal):

      HTTP是在应用层的一个协议,本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传输协议。 
      HTTP协议基于请求\响应模型的,并且是基于TCP协议的。

      HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

     个人理解:

      应用层的协议,支持服务器和web浏览器进行交互,响应结束后请求对象和响应请求对象立刻被销毁。

    展开全文
  •  HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。 ...

    一、什么是长连接

         HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。

     HTTP首部的Connection: Keep-alive是HTTP1.0浏览器和服务器的实验性扩展,当前的HTTP1.1 RFC2616文档没有对它做说明,因为它所需要的功能已经默认开启,无须带着它,但是实践中可以发现,浏览器的报文请求都会带上它。如果HTTP1.1版本的HTTP请求报文不希望使用长连接,则要在HTTP请求报文首部加上Connection: close。《HTTP权威指南》提到,有部分古老的HTTP1.0 代理不理解Keep-alive,而导致长连接失效:客户端-->代理-->服务端,客户端带有Keep-alive,而代理不认识,于是将报文原封不动转给了服务端,服务端响应了Keep-alive,也被代理转发给了客户端,于是保持了“客户端-->代理”连接和“代理-->服务端”连接不关闭,但是,当客户端第发送第二次请求时,代理会认为当前连接不会有请求了,于是忽略了它,长连接失效。书上也介绍了解决方案:当发现HTTP版本为1.0时,就忽略Keep-alive,客户端就知道当前不该使用长连接。其实,在实际使用中不需要考虑这么多,很多时候代理是我们自己控制的,如Nginx代理,代理服务器有长连接处理逻辑,服务端无需做patch处理,常见的是客户端跟Nginx代理服务器使用HTTP1.1协议&长连接,而Nginx代理服务器跟后端服务器使用HTTP1.0协议&短连接。

        在实际使用中,HTTP头部有了Keep-Alive这个值并不代表一定会使用长连接,客户端和服务器端都可以无视这个值,也就是不按标准来,譬如我自己写的HTTP客户端多线程去下载文件,就可以不遵循这个标准,并发的或者连续的多次GET请求,都分开在多个TCP通道中,每一条TCP通道,只有一次GET,GET完之后,立即有TCP关闭的四次握手,这样写代码更简单,这时候虽然HTTP头有Connection: Keep-alive,但不能说是长连接。正常情况下客户端浏览器、web服务端都有实现这个标准,因为它们的文件又小又多,保持长连接减少重新开TCP连接的开销很有价值。

         以前使用libcurl做的上传/下载,就是短连接,抓包可以看到:1、每一条TCP通道只有一个POST;2、在数据传输完毕可以看到四次握手包。只要不调用curl_easy_cleanup,curl的handle就可能一直有效,可复用。这里说可能,因为连接是双方的,如果服务器那边关掉了,那么我客户端这边保留着也不能实现长连接。    
        如果是使用windows的WinHTTP库,则在POST/GET数据的时候,虽然我关闭了句柄,但这时候TCP连接并不会立即关闭,而是等一小会儿,这时候是WinHTTP库底层支持了跟Keep-alive所需要的功能:即便没有Keep-alive,WinHTTP库也可能会加上这种TCP通道复用的功能,而其它的网络库像libcurl则不会这么做。以前观察过WinHTTP库不会及时断开TCP连接

    二、长连接的过期时间

        客户端的长连接不可能无限期的拿着,会有一个超时时间,服务器有时候会告诉客户端超时时间,譬如:
     
         上图中的Keep-Alive: timeout=20,表示这个TCP通道可以保持20秒。另外还可能有max=XXX,表示这个长连接最多接收XXX次请求就断开。对于客户端来说,如果服务器没有告诉客户端超时时间也没关系,服务端可能主动发起四次握手断开TCP连接,客户端能够知道该TCP连接已经无效;另外TCP还有心跳包来检测当前连接是否还活着,方法很多,避免浪费资源。

    三、长连接的数据传输完成识别

        使用长连接之后,客户端、服务端怎么知道本次传输结束呢?两部分:1是判断传输数据是否达到了Content-Length指示的大小;2动态生成的文件没有Content-Length,它是分块传输(chunked),这时候就要根据chunked编码来判断,chunked编码的数据在最后有一个空chunked块,表明本次传输数据结束。更细节的介绍可以看这篇文章

    四、并发连接数的数量限制

        在web开发中需要关注浏览器并发连接的数量,RFC文档说,客户端与服务器最多就连上两通道,但服务器、个人客户端要不要这么做就随人意了,有些服务器就限制同时只能有1个TCP连接,导致客户端的多线程下载(客户端跟服务器连上多条TCP通道同时拉取数据)发挥不了威力,有些服务器则没有限制。浏览器客户端就比较规矩,知乎这里有分析,限制了同域名下能启动若干个并发的TCP连接去下载资源。并发数量的限制也跟长连接有关联,打开一个网页,很多个资源的下载可能就只被放到了少数的几条TCP连接里,这就是TCP通道复用(长连接)。如果并发连接数少,意味着网页上所有资源下载完需要更长的时间(用户感觉页面打开卡了);并发数多了,服务器可能会产生更高的资源消耗峰值。浏览器只对同域名下的并发连接做了限制,也就意味着,web开发者可以把资源放到不同域名下,同时也把这些资源放到不同的机器上,这样就完美解决了。

    五、容易混淆的概念——TCP的keep alive和HTTP的Keep-alive

        TCP的keep alive是检查当前TCP连接是否活着;HTTP的Keep-alive是要让一个TCP连接活久点。它们是不同层次的概念。
        TCP keep alive的表现:
        当一个连接“一段时间”没有数据通讯时,一方会发出一个心跳包(Keep Alive包),如果对方有回包则表明当前连接有效,继续监控。
    这个“一段时间”可以设置。
    WinHttp库的设置

    WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL
    Sets the interval, in milliseconds, to send a keep-alive packet over the connection. The default interval is 30000 (30 seconds). The minimum interval is 15000 (15 seconds). Using WinHttpSetOption to set a value lower than 15000 will return with ERROR_INVALID_PARAMETER.

    libcurl的设置
    http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
    CURLOPT_TCP_KEEPALIVE
    Pass a long. If set to 1, TCP keepalive probes will be sent. The delay and frequency of these probes can be controlled by the CURLOPT_TCP_KEEPIDLE and CURLOPT_TCP_KEEPINTVL options, provided the operating system supports them. Set to 0 (default behavior) to disable keepalive probes (Added in 7.25.0).
    CURLOPT_TCP_KEEPIDLE
    Pass a long. Sets the delay, in seconds, that the operating system will wait while the connection is idle before sending keepalive probes. Not all operating systems support this option. (Added in 7.25.0)
    CURLOPT_TCP_KEEPINTVL
    Pass a long. Sets the interval, in seconds, that the operating system will wait between sending keepalive probes. Not all operating systems support this option. (Added in 7.25.0)
         CURLOPT_TCP_KEEPIDLE是空闲多久发送一个心跳包,CURLOPT_TCP_KEEPINTVL是心跳包间隔多久发一个。 
    打开网页抓包,发送心跳包和关闭连接如下:
     
        从上图可以看到,大概过了44秒,客户端发出了心跳包,服务器及时回应,本TCP连接继续保持。到了空闲60秒的时候,服务器主动发起FIN包,断开连接。

    六、HTTP 流水线技术

        使用了HTTP长连接(HTTP persistent connection )之后的好处,包括可以使用HTTP 流水线技术(HTTP pipelining,也有翻译为管道化连接),它是指,在一个TCP连接内,多个HTTP请求可以并行,下一个HTTP请求在上一个HTTP请求的应答完成之前就发起。从wiki上了解到这个技术目前并没有广泛使用,使用这个技术必须要求客户端和服务器端都能支持,目前有部分浏览器完全支持,而服务端的支持仅需要:按HTTP请求顺序正确返回Response(也就是请求&响应采用FIFO模式),wiki里也特地指出,只要服务器能够正确处理使用HTTP pipelinning的客户端请求,那么服务器就算是支持了HTTP pipelining。
        由于要求服务端返回响应数据的顺序必须跟客户端请求时的顺序一致,这样也就是要求FIFO,这容易导致Head-of-line blocking:第一个请求的响应发送影响到了后边的请求,因为这个原因导致HTTP流水线技术对性能的提升并不明显(wiki提到,这个问题会在HTTP2.0中解决)。另外,使用这个技术的还必须是幂等的HTTP方法,因为客户端无法得知当前已经处理到什么地步,重试后可能发生不可预测的结果。POST方法不是幂等的:同样的报文,第一次POST跟第二次POST在服务端的表现可能会不一样。
        在HTTP长连接的wiki中提到了HTTP1.1的流水线技术对RFC规定一个用户最多两个连接的指导意义:流水线技术实现好了,那么多连接并不能提升性能。我也觉得如此,并发已经在单个连接中实现了,多连接就没啥必要,除非瓶颈在于单个连接上的资源限制迫使不得不多开连接抢资源。
        目前浏览器并不太重视这个技术,毕竟性能提升有限。
    展开全文
  • http tcp,协议4和7层架构

    千次阅读 2018-12-23 17:04:56
    tcp:提供应用程序间的通信。其功能包括:一、格式化信息流,即分包加密等;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。 udp:把称作数据的分组以数据报的...

    先看下协议的四层架构:

    应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等

    传输层:两种协议提供的功能不同。

    tcp:提供应用程序间的通信。其功能包括:一、格式化信息流,即分包加密等;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。

    udp:把称作数据的分组以数据报的格式从一个主机发送到另一个主机,但并不保证该数据报能到达另一端。任何必需的可靠性必需由应用层来提供。

    网络层:1判断是否需要分片,当传输层是tcp时,无需分片,因为tcp会对大的数据分段;但是如果是udp则会先分片;
    2选择合适的传输路线将数据包发送给对方。

    链路层:包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,他们一起处理与电缆的物理接口细节。数据链路层是负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。

     

    网络层的协议包括IP协议,ICMP协议(Internet互联网控制报文协议)、以及IGMP协议(Internet组管理协议)

    ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。主要被IP使用,但也有直接使用此协议的,例如Ping和traceroute
     IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机上。

    协议七层架构

    区分tcp和http

    TCP是传输层,而http是应用层,知道了 http是要基于TCP连接基础上的,简单的说,TCP就是单纯建立连接,不涉及任何我们需要请求的实际数据,简单的传输。http是用来收发数据,即实际应用上来的。

    http的请求和响应报文格式如下:

    tcp的报文格式:

    展开全文
  • hadoop 中 RPC HTTP TCP/IP 服务器的用途

    千次阅读 2013-02-19 11:58:36
    hadoop 守护进程一般同时运行RPC 和HTTP两个服务器,RPC服务器支持守护进程间的通信,HTTP服务器则提供与用户交互的Web页面。需要分别为各个服务器配置网络地址和端口号。当网络地址被设为 0.0.0.0的时候,Hadoop将...

    hadoop 守护进程一般同时运行RPC 和HTTP两个服务器,RPC服务器支持守护进程间的通信,HTTP服务器则提供与用户交互的Web页面。需要分别为各个服务器配置网络地址和端口号。当网络地址被设为 0.0.0.0的时候,Hadoop将于本机上所有的地址绑定。用户也可以将服务器与某个指定的地址绑定。端口号为0 表示服务器会选择一个空闲的端口号:但这种做法与集群范围的防火墙策略不兼容,因为防火墙通常开放一定的端口不会放开全部的端口,防止对服务器造成冲击。

    RPC 服务器的属性

    fs.default.name  被设置为一个HDFS的URI时,该属性描述namenode的RPC服务器地址和端口。若未指定端口,那端口号默认是8020

    dfs.datanode.ipc.address  datanode 的RPC 服务器的地址和端口

    mapred.job.tracker 被设为主机名称和端口号时,该属性指定jobtracker的RPC服务器地址和端口。常用的端口号是8021

    mapred.task.tracker.report.address tasktracker的RPC 服务器地址和端口号,tashtracker的子JVM利用它和tasktracker通信。默认是127.0.0.0:0表示可以使用任一空闲端口,因为服务器进对回送地址隐藏。如果本机器没有回送地址,则需变更默认设置。


    HTTP服务器的属性

    mapred.job.tracker.http.address 默认0.0.0.0:50030

    mapred.task.tracker.http.address  默认0.0.0.0:50060

    dfs.http.address  默认0.0.0.0:50070

    dfs.datanode.http.address  默认0.0.0.0:50075

    dfs.secondary.http.address  默认0.0.0.0:50090


    除了 RPC服务器之外,datanode也运行TCP/IP服务器以支持块传输。服务器地址和端口属性有 

    dfs.datanode.address 默认是 0.0.0.0:50010

    当有多个网络接口时,还可以选择某一个网络接口作为各个datanode和tasktracker 的IP地址(针对RPC和HTTP服务器)。相关属性包括

    dfs.datanode.dns.interface

    mapred.tasktracker.dns.interface 

    默认都是default 表示使用默认的网络接口,可以修改者两个属性项来变更网络接口的地址 例如 ech0;

    展开全文
  • tcp udp http

    千次阅读 2018-09-25 20:07:57
    什么是TCP 什么是UDP 两者的区别... 1 描述tcp的三次握手四次挥手... 1 简书HTTP和HTTPS协议的不同之处... 1 http有八种请求 简书 get和post请求的区别... 2     什么是TCP 什么是UDP 两者的区别 TCP ...
  • TCPHTTP详解

    万次阅读 2018-04-18 11:05:54
    TCPHTTP   TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,采用三次握手建立连接,四次挥手终止连接。   TCP连接一旦建立,在通信双方中的任何...
  • httptcp

    千次阅读 2015-05-18 18:51:15
    1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP...
  • 理解HTTPTCP

    千次阅读 2018-08-28 18:38:17
    TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求。Http会通过TCP建立起一个到...
  • httptcp性能

    千次阅读 2019-02-18 13:53:02
    要说http就绕不开tcpTCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。 TCP/IP 协议分层模型 物理层将二进制的0和1和电压高低,光的闪灭和电波的强弱...
  • HTTP/TCP浅析

    千次阅读 2019-05-16 14:49:46
    本文主要转述和讲述了关于httptcp在互联网中的工作机制和各自特点!!
  • TCPHTTP

    万次阅读 2013-11-01 11:29:06
    1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个...
  • 一个tcp连接可以发送多少个http请求 1 如果tcp连接保持长连接,Connection:keep-alive && http(s) 1.1 只要在tcp连接(默认两小时)不断开,可以一直串行发送数量无上限; 2 如果tcp连接不保持长连接,...
  • 使用Wireshark抓TCPhttp

    千次阅读 2015-05-18 14:26:52
    使用Wireshark抓TCPhttp包 打开Wireshark,选择工具栏上的“Capture”->“Options”,界面选择如图1所示:   图1 设置Capture选项 一般读者只需要选择最上边的下拉框,选择合适的Device,而后点击“Capture...
  • HTTPTCP的关系

    千次阅读 2016-09-08 10:08:03
    HTTPTCP的关系原来一直是对HTTPTCP的关系模糊不清的,这有一点是由于HTTP名字的中文翻译失误。HyperText Transfer Protocol,它翻译成“超文本传输协议”,问题就在这个传输。于是我总是把HTTPTCP的职能认为是...
  • 使用 TCP 实现 HTTP

    千次阅读 2018-08-05 23:55:26
    利用网络调试助手,向大家展示HTTP是如何使用TCP实现的,其实就是通过TCP发送特定格式的数据。 注意:发送 GET / HTTP/1.1 时后面要跟两行回车,不然失败 111.13.100.91 为百度服务器的IP地址 ...
  • Http/TCP/SOCKET

    千次阅读 2018-11-06 08:46:19
    1.TCP连接与HTTP连接的关系 在网络分层中,HTTP协议是基于TCP协议的; 客户端向服务端发送一个HTTP请求时,需要先与服务端建立TCP连接,也就是经典的三次握手(通常对用- 户来说是很难察觉的),握手成功以后才能...
  • golang之httptcp

    千次阅读 2017-02-24 16:44:57
    这是一个基于gin的httptcp的程序,主要是为了方便web开发的程序员,可以通过http方式,直接实时下发消息到tcp连接的客户端。项目是基于gin,采用了map,把所有的tcp句柄和数据放到内存,高效稳定。项目地址:...
  • TCP/IP协议详解

    万次阅读 多人点赞 2019-05-11 08:40:41
    认识HTTP协议 它是互联网协议(Internet Protocol Suite),一个网络通信模型,是互联网的一个基本的构架。 HTTP协议是Hyper Text Transfer ...HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件...
  • HTTPTCP的区别

    千次阅读 2018-07-25 22:04:37
    从字面意义上讲, 有人可能会认为TCP/IP是指TCP和IP两种协议. 实际生活中有时也确实就是指这两种协议. 然而在很多情况下, 它只是利用IP进行通信时所必须用到的协议群的统称. 具体来说, IP或ICMP, TCP或U...
  • TCP协议与HTTP协议

    千次阅读 2018-12-01 18:33:41
    TCP协议与HTTP协议简介 TCP三次握手机制 TCP的报头结构 TCP协议与HTTP协议简介 HTTP,超文本传输协议。它是互联网上应用最为广泛的一种网络协议。 SOAP, 简单对象访问协议。是交换数据的一种协议规范。基于xml...
  • tcp http https

    千次阅读 2014-10-29 17:06:22
    http的get和post   get用?分割url和参数; 多参数间用&分割。
  • TCP, TCP/IP, HTTP有什么区别?

    千次阅读 多人点赞 2018-09-26 09:00:18
    因此就想知道TCP, TCP/IP, HTTP, Socket之间到底是有怎样的关联关系和区别, 以及全双工通信和半双工通信是如何实现的在网络层. 在计算机网络里,有两种常见的参考模型即:OSI参考模型和TCP/IP参考模型。由此可见TCP...
  • TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。 1,http对应于应用层 2,Tcp协议对应于传输层 3,http协议是在Tcp协议之上建立的,http在发起请求时通过tcp协议建立起连接服务器...
  • HTTPTCP的区别和联系

    千次阅读 多人点赞 2019-06-14 16:49:28
    HTTPTCP的区别和联系 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。 一、基本概念 1、TCP连接 手机能够使用联网功能是因为手机底层...
  • Netty 处理Tcp Http Udp

    千次阅读 2017-09-05 12:59:04
    netty 同时处理tcphttp,udp消息
  • 软件测试之TCPHTTP协议必知必会,面试必备!

    万次阅读 多人点赞 2020-07-13 00:41:54
    目录一、网络七层与四层模型1.1 OSI七层网络模型1.2 TCP/IP四层概念模型二、TCP、UPD协议详解2.1 TCP三次握手2.2 TCP四次挥手2.3 UDP协议与TCP协议对比三、HTTP、HTTPS协议详解3.1 HTTP协议之请求报文3.2 HTTP协议之...
  • httptcp的关系: (1)首先,httptcp、udp并不是在一个层(osi七层模型)中,http在应用层,tcp和udp在传输层。 (2)http是基于tcp的,因为发送http请求时,会先进行tcp三次握手的连接。 (3)http的长连接...
  • HTTPTCP的区别

    千次阅读 2018-04-22 16:45:09
    (第二列是相关协议)应用层HTTP(用于封装和显示数据)、Telnet、FTP表示层 会话层 传输层 TCP、UDP网络层IP、ICMP、IGMP数据链路层 物理层 那么,最明显的区别,应该就知道了:它们是处在不同层次的协议。...
  • Http协议与TCP协议简单理解

    万次阅读 多人点赞 2014-06-03 11:10:16
    在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解。 TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。Http协议是建立在TCP协议基础之上的,当浏览器需要从...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,093
精华内容 32,837
热门标签
关键字:

httptcp