<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://www.majordojo.com/projects/FeedManager/atom.xsl" type="text/xsl" media="screen"?>
<feed xmlns="http://www.w3.org/2005/Atom" 
      xmlns:thr="http://purl.org/syndication/thread/1.0">
  <link rel="alternate" type="text/html" href="http://www.thinkjam.org/zoptuno/archives/2006/01/tcpvsudp.html" />
  <link rel="self" type="application/atom+xml" href="http://www.thinkjam.org/zoptuno/archives/2006/01/tcpvsudp.html" />
  <id>tag:www.thinkjam.org,2009:/zoptuno//2/tag:www.thinkjam.org,2006:/zoptuno//2.274-</id>
  <updated>2009-09-21T03:13:38Z</updated>
  <title>Comments for 俗人俗语谈技术之TCP和UDP</title>
  <subtitle>My think. My dream.</subtitle>
  <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.31-zh-cn</generator>
  <entry>
    <id>tag:www.thinkjam.org,2006:/zoptuno//2.274</id>
    <link rel="alternate" type="text/html" href="http://www.thinkjam.org/zoptuno/archives/2006/01/tcpvsudp.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.thinkjam.org/loveblog/batom.cgi/weblog/blog_id=2/entry_id=274" title="俗人俗语谈技术之TCP和UDP" />
    <published>2006-01-17T10:29:00Z</published>
    <updated>2008-01-27T06:57:13Z</updated>
    <title>俗人俗语谈技术之TCP和UDP</title>
    <summary>已授权发表于《电脑商情报·家用电脑》。 还记得我们上次讲的TCP/IP协议吗？除...</summary>
    <author>
      <name>平生一笑</name>
      <uri>http://www.thinkjam.org/zoptuno</uri>
    </author>
    
    <category term="互联网" />
    
    <content type="html" xml:lang="en" xml:base="http://www.thinkjam.org/zoptuno/">
      <![CDATA[<p><font color="red">已授权发表于《电脑商情报·家用电脑》。</font></p>

<p>还记得我们上次讲的TCP/IP协议吗？除了第二层的IP协议外，相信大家最“喜闻乐见”的就是处于传输层的TCP（Transmission Control Protocol，传输控制协议）和UDP（User Datagram Protocol，用户数据包协议）！在即时通信、防火墙等常用软件中，你不难找到它们的身影，那么，这两个协议到底有何作用，又有何区别呢？</p>]]>
      <![CDATA[<p>实际上，在上次的文章中，我们曾经讲过它们的作用。“当IP包通过路由将数据传输到目的地时，会根据TCP或UDP包头中的源端口和目的端口信息，请求和获取不同的应用。”也就是说，不管TCP还是UDP，都含有网络服务必须的源端口和目的端口信息，以建立和实现网络传输服务。这时，你的疑问就来了：既然都用于传输，为何要搞两个不同的协议呢？这就需要从网络中不同服务的需求来谈起。</p>

<p>在网络中，有些服务，如HTTP、FTP等，对数据的可靠性要求较高，在使用这些服务时，必须保证数据包能够完整无误的送达；而另外一些服务，如DNS、即时聊天工具等，并不需要这么高的可靠性，高效率和实时性才是它们所关心的。根据这两种服务不同的需求，也就诞生了面向连接的TCP协议，以及面向无连接的UDP协议。</p>

<p>这里的连接（Connection）和无连接（Connectionless）是网络传输中常用的术语，它们的关系可以用一个形象地比喻来说明，就是打电话和写信。</p>

<p>打电话时，一个人首先必须拨号（发出连接请求），等待对方响应，接听电话（建立了连接）后，才能够相互传递信息。通话完成后，还需要挂断电话（断开连接），才算完成了整个通话过程。写信则不同，你只需填写好收信人的地址信息，然后将信投入邮局，就算完成了任务。此时，邮局会根据收信人的地址信息，将信件送达指定目的地。</p>

<p>我们可以看到，这两者之间有很大不同。打电话时，通话双方必须建立一个连接，才能够传递信息。连接也保证了信息传递的可靠性，因此，面向连接的协议必然是可靠的。无连接就没有这么多讲究，它不管对方是否有响应，是否有回馈，只管将信息发送出去。就像信件一旦进了邮箱，在它到达目的地之前，你没法追踪这封信的下落；接收者即使收到了信件，也不会通知你信件何时到达。在整个通讯过程中，没有任何保障。因此我们常说，面向无连接的协议也是不可靠的。当然，邮局会尽力将右键送到目的地，99%的情况信件会安全到达，但在少数情况下也有例外。</p>

<p>面向连接的协议比面向无连接的协议在可靠性上有着显著的优势，但建立连接前必须等待接收方响应，传输信息过程中必须确认信息是否传到，断开连接时需要发出响应信号等，无形中加大了面向连接协议的资源开销。具体到TCP和UDP协议来说，除了源端口和目的端口，TCP还包括序号、确认信号、数据偏移、控制标志（通常说的URG、ACK、PSH、RST、SYN、FIN）、窗口、校验和、紧急指针、选项等信息，UDP则只包含长度和校验和信息。UDP数据报比TCP小许多，这意味着更小的负载和更有效的使用带宽。许多即时聊天软件采用UDP协议，与此有莫大的关系。</p>

<p>最后说一句，IP协议也是一种面向无连接的协议。</p>]]>
    </content>
  </entry>

  <entry>
    <id>tag:www.thinkjam.org,2006:/zoptuno//2.274-comment:1729</id>
    <thr:in-reply-to ref="tag:www.thinkjam.org,2006:/zoptuno//2.274" type="text/html" href="http://www.thinkjam.org/zoptuno/archives/2006/01/tcpvsudp.html"/>
    <link rel="alternate" type="text/html" href="http://www.thinkjam.org/zoptuno/archives/2006/01/tcpvsudp.html#c1729" />
    <title>Comment from 李 on 2007-09-18</title>
    <author>
        <name>李</name>
<!--         -->
    </author>
    <content type="html" xml:lang="en" xml:base="">
	<![CDATA[<p>您好：我想请教您一个问题，就是我想用labview做一个局域网互相通信的工具。用udp协议。里面好象要loadprot，remoteport，这两个端口是自己随便填1.2.3.4.....吗？<br />
还是有一个特定或范围选择。请指教。发到我油箱好吗。麻烦您！</p>]]>
    </content>
    <published>2007-09-18T01:36:15Z</published>
    <updated>2007-09-18T01:36:15Z</updated>
  </entry>

</feed>
