TCP/IP网络协议的通俗理解,SOCKET,HTTP,SOAP

术语TCP/IP表明传输控制协议/网际协议,指的是一系列协议。“IP”表明网际协议,TCP和UDP使用该协议从一个网络传送数据包到另外一个网络。把IP想像成一种高速公路,它容许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。 
    你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其余协议的,它们却有一个显著的不一样:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另外一个端点,而UDP不提供任何这样的保证。
    HTTP(超文本传输协议)是利用TCP在两台电脑(一般是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
SOAP(Simple Object Access Protocal,简单对象访问协议) 技术有助于实现大量异构程序和平台之间的互操做性,根据我有限的了解,SOAP是把成熟的基于HTTP的WEB技术与XML的灵活性和可扩展性组合在了一块儿。好比咱们.NET中的WEB服务(WebService),就是基于SOAP。
    记住,须要IP协议来链接网络;TCP是一种容许咱们安全传输数据的机制,使用TCP协议来传输数据的HTTP是Web服务器和客户端使用的特殊协议。

国际标准化组织(ISO)定义了网络协议的基本框架,被称为OSI模型。要制定通信规则,内容会不少,好比要考虑A电脑如何找到B电脑,A电脑在发送信息给B电脑时是否须要B电脑进行反馈,A电脑传送给B电脑的数据的格式又是怎样的?内容太多太杂,因此OSI模型将这些通信标准进行层次划分,每一层次解决一个类别的问题,这样就使得标准的制定没那么复杂。OSI模型制定的七层标准模型,分别是:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。php

虽然国际标准化组织制定了这样一个网络协议的模型,可是实际上互联网通信使用的网络协议是TCP/IP网络协议。html

TCP/IP 是一个协议族,也是按照层次划分。共四层:应用层,传输层,互连网络层,网络接口层。 那么TCP/IP协议和OSI模型有什么区别呢?OSI网络协议模型,是一个参考模型,而TCP/IP协议是事实上的标准。TCP/IP协议参考了OSI模型,可是并无严格按照OSI规定的七层去划分标准,而只划分了四层,我的以为这样会更简单点,当划分太多层次时,你很难区分某个协议是属于哪一个层次的。TCP/IP协议和OSI模型也并不冲突,TCP/IP协议中的应用层协议,就对应于OSI中的应用层,表示层,会话层。就像之前有工业部和信息产业部,如今实行大部制后只有工业和信息化部一个部门,可是这个部门仍是要作之前两个部门同样多的事情,本质上没有多大的差异。TCP/IP中有两个重要的协议,传输层的TCP协议和互连网络层的IP协议,所以就拿这两个协议作表明,来命名整个协议族了,在说TCP/IP协议时,是指整个协议族。web

TCP/IP协议分为四个层次,但咱们并不须要了解全部层次的协议,我以为主要关注应用层和传输层的协议就能够了。拿寄送邮件举例, A寄邮件给B,A关心的是用什么格式写什么内容给B(应用层内容),是寄挂号信仍是寄平信(传输层内容),可是A是不会去关注邮件传送过程当中采用了那条路线,邮递员是如何把信件递送到B手里的(互连网络层,网络接口层)。浏览器

先说传输层,传输层有多个协议,但最主要的是TCP和UDP协议。两则的区别在于TCP协议须要接收方反馈,UDP协议不须要接收方反馈。TCP就像挂号信,A电脑发信息给B电脑后,须要获得B电脑的反馈,这样A电脑就能知道B电脑是否已经收到信息。UDP就像平信,A电脑发信息给B电脑后,B电脑并不给A电脑发聩,A电脑发送信息出去后并不知道B电脑是否已经收到。 所以,TCP传输比UDP传送更可靠,可是TCP传输的效率就不如UDP了。至于,在传送过程当中具体选择哪一种传送方式,须要具体问题具体分析。在不可靠的网络传送过程当中通常选择TCP传送方式。在讲求效率,或者不在意传送失误的状况下能够选择UDP方式来提升传输速率。安全

应用层的协议有不少,每个协议表明一种类型的服务。HTTP协议---万维网服务。FTP协议---文件传送服务。POP3---邮件服务,SOAP协议---webService服务。服务器

在理解TCP/IP协议的过程当中,我遇到了三个困惑。网络

1.什么是socket?框架

socket就是一个链接中的一个端点,一次通信(链接)a,b端都会有一个socket。一个socket对应一个链接。异步

2.http协议属于应用层仍是传输层?socket

HTTP 在中国大陆被翻译为“超文本传输协议”,由于“transfer”在中文里有“传输”的含意。但依据 HTTP 定制者之一的 Roy Fielding博士的论文[1](6.5.3节),做者专门强调“transfer”表示的是“(表述状态的)转移”(Representational State Transfer),而不是“传输”(transport)。更符合原义的译名应该为“超文本转移协议”。这段话解除了个人疑惑。那么http协议固然是应用层的协议。

3.SOAP可使用HTTP协议进行传输吗?

在了解SOAP协议的过程当中,看到介绍说soap能够经过tcp,udp,http协议来传送。这也是让人困惑的描述。一看这句话,就会感受http怎么和tcp,udp协议并列了呢?难道http仍是属于传输层的协议?再加上http中文译名的问题,名字听上去像传输层,初学者又要开始头大了。

事实上,http是应用层的协议,这一点能够毫无怀疑。那么如今新的问题来了。soap和http都是应用层协议,怎么说soap能用http协议来传输呢?应用层的协议能够用应用层的协议传送吗?

我查阅了资料,是这样一回事情,soap将信息进行XML的序列化后,再用http协议的方式再打包进行传送,传送的方式仍是tcp或者udp。作个比喻就好理解了。tcp 和 udp 都是公路,暂且把tcp认为是通常公路,udp高速公路,soap和http就都是汽车,那么soap和http均可以在tcp和udp上跑。说soap能够经过http来传送,实际就是说soap是小轿车,http是装轿车的卡车,把soap的信息装到http里面,而后再运输,固然走的道路仍是tcp或udp。

说soap能够经过http协议来传输,这句话不太准确,比较准确第说法是:soap信息能够经过http协议包装后经过tcp或udp传输。

 
分类:  程序

下面的图表试图显示不一样的TCP/IP和其余的协议在最初OSI模型中的位置:

7 应用层 例如HTTPSMTPSNMPFTPTelnetSIPSSHNFSRTSPXMPPWhoisENRP
6 表示层 例如XDRASN.1SMBAFPNCP
5 会话层 例如ASAPTLSSSH、ISO 8327 / CCITT X.22五、RPCNetBIOSASPWinsockBSD sockets
4 传输层 例如TCPUDPRTPSCTPSPXATPIL
3 网络层 例如IPICMPIGMPIPXBGPOSPFRIPIGRPEIGRPARPRARP、 X.25
2 数据链路层 例如以太网令牌环HDLC帧中继ISDNATMIEEE 802.11FDDIPPP
1 物理层 例如线路无线电光纤信鸽
相关文章
相关标签/搜索