TCP/IP、Http、Socket的差别

    添加时间:2013-5-9 点击量:

      大学进修收集根蒂根基的时辰教员讲过,收集由下往上分为


      物理层、数据链路层、收集层、传输层、会话层、默示层和应用层。


      经由过程初步的懂得,我知道IP和谈对应于收集层,TCP和谈对应于传输层,而HTTP和谈对应于应用层


      三者从本质上来说没有可比性,


      socket则是对TCP/IP和谈的封装和应用(法度员层面上)。


      也可以说,TPC/IP和谈是传输层和谈,首要解决数据如安在收集中传输,


      而HTTP是应用层和谈,首要解决如何包装数据。


      关于TCP/IP和HTTP和谈的关系,收集有一段斗劲轻易懂得的介绍:


        “我们在传输数据时,可以只应用(传输层)TCP/IP和谈,然则那样的话,若是没有应用层,便无法辨认数据内容。


      若是想要使传输的数占领意义,则必须应用到应用层和谈。


      应用层和谈有很多,比如HTTP、FTP、TELNET等,也可以本身定义应用层和谈。


      WEB应用HTTP和谈作应用层和谈,以封装HTTP文本信息,然后应用TCP/IP做传输层和谈将它发到收集上。”


       而我们日常平凡说的最多的socket是什么呢,实际上socket是对TCP/IP和谈的封装,Socket本身并不是和谈,而是一个调用接口(API)。


      经由过程Socket,我们才干应用TCP/IP和谈。


      实际上,Socket跟TCP/IP和谈没有必定的接洽。


      Socket编程接口在设计的时辰,就也能适应其他的收集和谈。


      所以说,Socket的呈现只是使得法度员更便利地应用TCP/IP和谈栈罢了,是对TCP/IP和谈的抽象,


      从而形成了我们知道的一些最根蒂根基的函数接口,比如create、listen、connect、accept、send、read和write等等。


      收集有一段关于socket和TCP/IP和谈关系的说法斗劲轻易懂得:


       “TCP/IP只是一个和谈栈,就像操纵体系的运行机制一样,必必要具体实现,同时还要供给对外的操纵接口。


      这个就像操纵体系会供给标准的编程接口,比如win32编程接口一样,


      TCP/IP也要供给可供法度员做收集开辟所用的接口,这就是Socket编程接口。”


       关于TCP/IP和谈的相干只是,用博大高深来讲我想也不为过,单单查一下网上关于此类只是的材料和册本文献的数量就知道,


       这个我筹算会买一些经典的册本(比如《TCP/IP详解:卷一、卷二、卷三》)进行进修,今天就先总结一些基于基于TCP/IP和谈的应用和编程接口的常识,也就是刚才说了很多的HTTP和Socket。


       CSDN上有个斗劲形象的描述:HTTP是轿车,供给了封装或者显示数据的具体情势;Socket是发动机,供给了收集通信的才能。


        实际上,传输层的TCP是基于收集层的IP和谈的,而应用层的HTTP和谈又是基于传输层的TCP和谈的,而Socket本身不算是和谈,就像上方所说,它只是供给了一个针对TCP或者UDP编程的接口。


     下面是一些经常在笔试或者口试中碰着的首要的概念,特在此做摘抄和总结。


    一、什么是TCP连接的三次握手


    第一次握手:客户端发送syn包(syn=j)到办事器,并进入SYN_SEND状况,守候办事器确认;
    第二次握手:办事器收到syn包,必须确认客户的SYN(ack=j+1),同时本身也发送一个SYN包(syn=k),即SYN+ACK包,此时办事器进入SYN_RECV状况;
    第三次握手:客户端收到办事器的SYN+ACK包,向办事器发送确认包ACK(ack=k+1),此包发送完毕,客户端和办事器进入ESTABLISHED状况,完成三次握手。
           握手过程中传送的包里不包含数据,三次握手完毕后,客户端与办事器才正式开端传送数据。


          幻想状况下,TCP连接一旦建树,在通信两边中的任何一方主动封闭连接之前,TCP 连接都将被一向对峙下去。


          断开连接时办事器和客户端均可以主动创议断开TCP连接的恳求,断开过程须要经过“四次握手”(过程就不细写了,就是办事器和客户端交互,终极断定断开)


    二、哄骗Socket建树收集连接的步调


    建树Socket连接至少须要一对套接字,此中一个运行于客户端,称为ClientSocket ,另一个运行于办事器端,称为ServerSocket 。


    套接字之间的连接过程分为三个步调:办事器,客户端恳求,连接确认。


    1、办事器:办事器端套接字并不定位具体的客户端套接字,而是处于守候连接的状况,及时监控收集状况,守候客户端的连接恳求。


    2、客户端恳求:指客户端的套接字提出连接恳求,要连接的目标是办事器端的套接字。


      为此,客户端的套接字必须起首描述它要连接的办事器的套接字,指出办事器端套接字的地址和端标语,然后就向办事器端套接字提出连接恳求。


    3、连接确认:当办事器端套接字到或者说接管到客户端套接字的连接恳求时,就响应客户端套接字的恳求,建树一个新的线程,把办事器端套接字的描述发给客户端,一旦客户端确认了此描述,两边就正式建树连接。


      而办事器端套接字持续处于状况,持续接管其他客户端套接字的连接恳求。


    三、HTTP链接的特点


    HTTP和谈即超文本传送和谈(Hypertext Transfer Protocol ),是Web联网的根蒂根基,也是联网常用的和谈之一,HTTP和谈是建树在TCP和谈之上的一种应用。


    HTTP连接最明显的特点是客户端发送的每次恳求都须要办事器回送响应,在恳求停止后,会主动开释连接。从建树连接到封闭连接的过程称为“一次连接”。


    四、TCP和UDP的差别(考得最多。。快被考烂了我感觉- -\\)


    1、TCP是面向链接的,固然说收集的不安然不稳定特点决意了几许次握手都不克不及包管连接的靠得住性,但TCP的三次握手在最低限度上(实际上也很大程度上包管了)包管了连接的靠得住性;


      而UDP不是面向连接的,UDP传送数据前并不与对方建树连接,对接管到的数据也不发送确认旌旗灯号,发送端不知道数据是否会正确接管,当然也不消重发,所以说UDP是无连接的、不成靠的一种数据传输和谈。


    2、也正因为1所说的特点,使得UDP的开销更小数据传输速度更高,因为不必进行收发数据的确认,所以UDP的及时性更好。


      知道了TCP和UDP的差别,就不难懂得为何采取TCP传输和谈的MSN比采取UDP的QQ传输文件慢了,但并不克不及说QQ的通信是不安然的,


      因为法度员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接管方进行验证啊什么的,


      即使是如许,UDP因为在底层和谈的封装上没有采取类似TCP的“三次握手”而实现了TCP所无法达到的传输效力。

    我俩之间有着强烈的吸引力。短短几个小时后,我俩已经明白:我们的心是一个整体的两半,我俩的心灵是孪生兄妹,是知己。她让我感到更有活力,更完美,更幸福。即使她不在我身边,我依然还是感到幸福,因为她总是以这样或者那样的方式出现在我心头。——恩里克·巴里奥斯《爱的文明》
    分享到: