TCP/IP、UDP、HTTP、SPDY等的一些解释说明

文章大部分内容均是来自于网络和相关的官方文档,仅作整理和总结。

在理解这些名词以及他们之间的关系之前,有必要先理解下OSI模型。OSI七层模型详解

简单的用下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:

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

1.TCP/IP

TCP/IP术语,TCP/IP代表传输控制协议/网际协议,指的是一系列协议.从上面的表格表面可以看出,TCP是传输层的协议,IP是网络层的协议。

但是一般我们说到TCP/IP说的都是基于上面OSI参考模型的一个四层参考模型的协议。OSI七层模型详解 这里有比较详细的讲解。

我们只看下面这张图来辅助理解。

2.TCP 和 UDP (IP)

首先,TCP/IP 和UDP最大的区别就是:TCP/IP是面向连接的,UDP是非面向连接的。通俗一点说就是:TCP/IP管发管到,UDP管发不管到。因此,在安全性方面来说,TCP/IP更具有优越性。

第二:TCP/IP偏重的是点对点的通信,使用时服务器和客户端的区别显而易见,而UDP则可以使用组播实现一对多,通信时更像一个群聊系统,几乎没有客户端和服务器的区别,在时间和空间上具有更高的节约性。使用组播时,确定一个D类地址作为组的地址,将本机加入组中,向组内发送消息,从组中接收消息。

第三:在具体编写的代码结构上,TCP/IP是通过创建Socket对象进行连接,从连接对象上得到输入输出流,在流中读写从而通信。而UDP则是在本机创建DatagramSocket对象,将数据包装成DatagramPacket包来发送,其中包里有要发送到的地址。TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。

一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

IP协议的基本功能是提供数据传输、数据包编止、数据包路由,分段等。通过ip编止约定,可以成功的将数据通过路由传输到正确的网络或者子网。

面向连接的tcp,是基于连接的协议,也就是说在正式收发数据前,必须和对方建立可靠的连接,该协议能提供可靠的数据传输,保证数据准确无误的到达目的地。

面向非连接的udp协议,他不对对方建立连接,而是直接把数据包发过去!该协议不能保证数据准确无误的到达。

udp适合用于一次只传少量数据,对可靠要求不高的应用环境,比如,我们经常用“ping”来测试两台主机通信是否正常,其实该命令就是向对方发送udp数据包,然后对方主机确认收到数据包,如果数据包到达的信息及时返回的话,就说明网络是通的。

QQ就是udp发信息的,因此有时会出现收不到信息的时候

此外,

udp程序结构比较简单,tcp对系统资源的要求比udp多
udp和tcp协议是传输层的协议,而ip协议是网络层的协议
tcp的连接需要三次握手过程,断开需要4次

此部分来源: <http://blog.csdn.net/lwnylslwnyls/article/details/8167058>


3.HTTP 和 TCP UDP

在说明这间的区别前,先大概的理解下HTTP协议:

HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
HTTP需要详细了解的话,可以参考这里:
http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html

TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。

关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议。

“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。

你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。
虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。

这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。

此部分来源: <http://www.cnblogs.com/renyuan/archive/2013/01/19/2867720.html>

4.SPDY 和 OKHttp

SPDY:

在说明OKHttp前非常有必要了解下SPDY到底是什么东西:

1.概述:

更加详细的说明可见 http://blog.csdn.net/marcky/article/details/7728662

下面做简单的说明。

As part of the "Let‘s make the web faster" initiative, we are experimenting with alternative protocols to help reduce the latency of web pages. One of these experiments is SPDY (pronounced "SPeeDY"), an application-layer protocol for transporting content over the web, designed specifically for minimal latency. In addition to a specification of the protocol, we have developed a SPDY-enabled Google Chrome browser and open-source web server. In lab tests, we have compared the performance of these applications over HTTP and SPDY, and have observed up to 64% reductions in page load times in SPDY. We hope to engage the open source community to contribute ideas, feedback, code, and test results, to make SPDY the next-generation application protocol for a faster web. 这段话,是google发布的白皮书里的说明。

地址:http://www.chromium.org/spdy/spdy-whitepaper

简单的来说,

SPDY 是 Google 开发的基于传输控制协议 (TCP) 的应用层协议 ,开发组正在推动 SPDY 成为下一代的应用协议标准(现为互联网草案)。

SPDY 协议旨在通过压缩、多路复用和优先级来缩短网页的加载时间和提高安全性。(SPDY 是 Speedy 的昵音,意思是更快)

2.与HTTP的关系

更加详细的说明可见:http://www.williamlong.info/archives/3119.html

SPDY并不用于取代HTTP,它只是修改了HTTP的请求与应答在网络上传输的方式;这意味着只需增加一个SPDY传输层,现有的所有服务端应用均不用做任何修改。

当使用SPDY的方式传输,HTTP请求会被处理、标记简化和压缩。比如,每一个SPDY端点会持续跟踪每一个在之前的请求中已经发送的HTTP报文头部,从而避免重复发送还未改变的头部。而还未发送的报文的数据部分将在被压缩后被发送。

3.原理 (翻译自Google文档)

在SSL层上增加一个SPDY会话层,以在一个TCP连接中实现并发流。

通常的HTTP GET和POST格式仍然是一样的;然而SPDY为编码和传输数据设计了一个新的帧格式。

流是双向的,可以在客户端和服务器端启动。

SPDY旨在通过基本(始终启用)和高级(可选启用)功能实现更低的延迟

OKHttp:

一句话:

An HTTP & SPDY client for Android and Java applications。

具体使用或者Demo可以见 :http://square.github.io/okhttp/ https://github.com/square/okhttp

5.FTP简单解释

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。
同时,它也是一个应用程序(Application)。

用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。


声明:


1.由于互联网数据的分享性,如果我发表的文章,来源于您的原创文章,且我没有注明,请邮件[email protected]说明。
2.欢迎转载,但请注明文章原始出处。
  作者:Oak
  出处:http://www.cnblogs.com/oakMac/


 
时间: 2024-08-29 20:29:11

TCP/IP、UDP、HTTP、SPDY等的一些解释说明的相关文章

TCP/IP, UDP, ICMP, ARP协议族简介--纯图慎点

ISO/OSI的网络模型架构 TCP/IP参考模型的层次结果 以太网头部结构 以太网属于数据链路层, 属于最基本的协议结构 IP协议 IP协议为TCP, UDP, ICMP提供最基本的数据传输通路 ICMP协议 ICMP协议用于传递差错信息, 时间, 回显, 网络信息等报文数据, ICMP在IP报文中的位置为: 通过ICMP协议, 判断局域网的某台机器是否在线的文章: linux:C语言通过ICMP局域网内部主机是否存活:http://www.cnblogs.com/diligenceday/p

android 网络编程--socket tcp/ip udp http之间的关系

网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层,一般编程人员接触最多的就是应用层和运输层,再往下的就是所谓的媒体层了,不是我们研究的对象. 下面是应用层.运输层,网络层.链路层通信协议概图.我们经常接触到的一般是: http协议:应用层协议,并且http协议是基于tcp连接的,主要解决的是如何包装协议的 tcp协议:运输层协议,通常也叫做tcp/ip协议,主要解决数据如何在网络中传输 udp协议:运输层协议,用户数据报协议,不可靠的协议,只负责把应用层的协议的数

HTTP/TCP/IP UDP Socket等区别联系

1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上. 建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_

TCP/IP||UDP广播和多播

1.概述 广播和多播应用于UDP,TCP是一个面向连接协议,意味着分别运行与两个主机内的两进程间存在一个连接,在考虑多个主机内的共享通信网络,每个以太网帧包含源主机和目的主机以太网地址(48bit),通常以以太网帧发往单个主机,目的地指明单个接收接口,因此称单播(unicast),然而需要一个主机向网上的所有主机发送帧,只就是广播,再通过ARP和RARP发现,多播(multicast)处于单播和广播之间,帧仅属于多播组的多个主机. 该图中,网卡查看由信道传送过来的帧,确认是否收到帧,如果接收到发

【DAY18】Socket编程,ROSE建模与TCP/IP的学习笔记

IDE eclipse调试 ------------------ 1.Debug 2.Step into : F5  ,单步进入. 3.Step return : F7,单步返回. 4.Stop over : F6,单步跳过. 安装Rose建模软件 ----------------- 1.安装虚拟光驱软件:DTLite.exe 2.加载Rose镜像文件. 3.一路安装,next... 4.安装完成注册License. a.在license管理器界面 开始 --> IBM Rose -> Lic

TCP/IP协议的编写《转载》

基于HHARM9-EDU的TCP/IP(UDP)协议的实现 原文网址:http://blog.csdn.net/lhj0503/article/details/3323788 摘 要:嵌入式技术的发展日新月异,现如今,嵌入式设备已经广泛应用于各种网络,本文简要地说明一下如何实现PC与HHARM9-EDU之间的TCP/IP(UDP) 通讯. 关键词:嵌入式系统 TCP/IP协议  协议端口  套接字 UDP协议 ABSTRACT:The development ofembedded system

11 TCP/IP 基础与Linux的网络配置

1. TCP/IP与OSI参考模型 TCP/IP是Unix/Linux世界的网络基础,在某种意义上Unix网络就是TCP/IP,而TCP/IP就是网络互联的标准.它不是一个独立的协议,而是一组协议.其中包括:TCP,IP,UDP,ARP,RARP等等. 2. IP地址 每个Internet上的主机和路由器都有一个IP地址,它包括网络号和主机号,IP地址都是32位(点分十进制),IP地址按国际标准划分为a,b,c,d,e五类. 3. Linux网络环境配置 方法一: #setup         

赵雅智_java网络编程(5)TCP和udp区别

1.TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性; 而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的.不可靠的一种数据传输协议. 2.也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好. 知道了TCP和UD

关于TCP/IP [本文发表于《程序员》杂志2003年第12期,作者孟岩]

基于TCP/IP的编程格外重要.从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架(如ACE.Java..NET FCL)和控件(如IP*Works)大大简化了TCP/IP编程的难度.高层的框架和控件总结了TCP/IP的主要使用模式,并且进行了抽象和封装,这固然非常好,但是想要真正掌握TCP/IP网络编程的真谛,恐怕需要认真学习下面几本著作. [ 查看本指南所提及的书籍 ] [本文发表于<程序员>杂志2003年第12期,作者孟岩] TCP