[译]TCP和UDP的区别
译者:华科小涛:http://www.cnblogs.com/hust-ghtao/
最近开始学习计算机网络的知识,找了些英文的资料,翻译过来,一是为了深入学习网络,也是为了锻炼自己看英文文档的能力。
原文链接:http://blog.pluralsight.com/networking-basics-tcp-udp-tcpip-osi-models,(如果侵权的话,大家告诉我哦)。
译文:
传输控制协议/互联网协议(TCP/IP)套件(suite翻译成套件有点奇怪啊!)是由美国国防部(DoD)发明的,旨在确保通信在任何情况下都能进行,在遭受恶意攻击时,数据完整性也能保证啊。
传说中的开放互联参考模型(OSI Model)是对网络协议设计的抽象描述,目的就是为了规范网络。
这篇文章,我会阐述DoD和OSI模型的区别,更进一步还会介绍DoD版TCP/IP模型的细节。我还会介绍DoD各层协议,当然重点会放在TCP和UDP。通过这篇文章,你会找到关于TCP/IP套件的干货哦。
如果你正在准备CCENT货CCNA(不知道是啥)的考试,或者你对网络很感兴趣,那就千万不要错过呀。记好安全带,have a good ride,(懂意思,不会翻译!)。
TCP/IP和OSI模型的比较
让我们从比较TCP/IP和OSI模型开始。TCP/IP模型是OSI模型的简化版,用四层取代OSI的七层。尽管存在结构上的差异,但两种模型有可互换的传输层和网络层,它们的操作也都是基于分组交换技术。下图就表明两种模型的不同之处:

(译者注:按照惯例呢,Application译成应用层,Host-to-Host传输层,Internet网络层,NetworkAccess链路层。)
- 应用层: 应用层负责表示、编码、和对话控制。所有这些问题集中起来在TCP/IP模型中就是一层,在OSI模型中是三层。
- 传输层: TCP/IP中的Host-to-Host 协议功能和OSI模型中的模型差不多,包括应用数据的分割,传输可靠性保证,流和错误控制。
- 网络层:TCP/IP中的网络层和OSI模型中的网络层提供相同的服务。主要目的就算是将数据包送到目的地,而且和所选路径无关。
- 链路层:链路层处理一切和网络媒介上的数据终端有关的物理问题。是OSI模型中DataLink和Physical概念的和。
下图显示了TCP/IP模型和TCP/IP协议族之间的关系:

传输层的网络协议
两个协议:传输控制协议(TCP)和用户数据报协议(UDP)是被设计用来传输数据报的。我们将着眼于它们的细节和与上层的交互。
1.传输控制协议(TCP)
TCP是面向连接的协议,在传输数据之前必须建立连接。TCP协议的数据单元叫做数据段,以段的形式接受和发送数据实体,这些段由一个固定20-byte头后面跟着一个变量大小数据字段组成。
TCP负责将字节流分解成数据段发送,并在另一端合并,重新发送任何可能丢失的数据并将数据段按正确的顺序组织。数据段大小由链路层技术决定的最大传送单元严格限制。(1500字节通常是以太网的最大有效载荷大小)。
下图就是TCP数据段的格式:

其中:
- Source Port and Destination Port 为源端口和目的端口,确定特定链接的两个端点。一个端口加上主机的IP地址就可以确定一个端点啦。端口用来和上层通信,还可以用来区分同一台电脑上不同的应用程序。
- The Sequence Number and Acknowledgment Number 指定字节流中的字节。The Sequence Number用来重新排序或重新发送丢失的数据段。The Acknowledgment number 被设定为预期的下一个段。
- Data offset or TCP header length 表明在TCP的头信息中有多少word(一个word 4 字节哦)。
- The Window field 表明在收到确认之前可以传输多少字节。
- The Checksum field 提供额外的可靠性和安全性。
- 用户数据就跟在头的后面。
让我们来看下抓包器是怎么捕获TCP数据包的,下图显示了一个TCP的请求信息。注意上面提到的字段:Source Port, Destination Port, Sequence number, Acknowledgement number, Window size and checksum.

用户数据报协议 (UDP)
UDP 协议包含的头部信息较少. 是因为有些数据类型不需要可靠的交付和额外的开销. 例如实时交通系统,为了确保实时传送数据,就没有采用纠错和重传机制。
UDP是一种无连接的协议。它的可靠性由应用层处理。它所在乎的就是尽可能快的传输数据。UDP数据段格式如下图所示:

Let’s see how a UDP segment is captured by Ethereal. Notice the small header size:

该用哪种协议呢?
要传输的数据的性质决定了要采用的协议. 如果信息要可靠、有顺序的、完整的传输,那就用TCP协议呗。如果数据对实时性要求很高,为了减少开销和处理,那就用UDP协议。
下面的表格简单总结了TCP和UDP的特点,将它们牢记于心,选择时就不用纠结了:

[译]TCP和UDP的区别的更多相关文章
- OSI参考模型及各层功能,TCP与UDP的区别
OSI参考模型:ISO/IEC 7498标准定义了网络互联的7层结构模型,即开放系统互连参考模型. OSI参考模型定义了开放系统的层次结构.层次之间的相互关系,以及各层所包括的可能的服务.OSI的服务 ...
- TCP与UDP的区别
TCP与UDP的区别 TCP面向连接:UDP是无连接,即发送数据之前不需要建立连接 TCP提供可靠的服务,TCP连接传送的数据,无差错.不丢失.不重复,且按顺序到达:UDP尽最大努力交付,即不保证可靠 ...
- TCP和UDP的区别(转)
TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...
- TCP与UDP的区别(转)
源:http://blog.chinaunix.net/uid-20745340-id-1878774.html 参考:TCP协议与UDP协议的区别 TCP与UDP的区别 中国移动.中国联通推行的GP ...
- 【基础网络】TCP与UDP 的区别
TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...
- TCP和UDP的区别(Socket)
TCP和UDP区别 TCP和UDP编程区别 TCP编程的服务器端一般步骤是: 1.创建一个socket,用函数socket(): 2.设置socket属性,用函数setsockopt(); * 可 ...
- 【转】TCP/IP协议中TCP和UDP的区别
TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...
- 知其所以然~tcp和udp的区别
TCP UDP TCP与UDP基本区别 基于连接与无连接 TCP要求系统资源较多,UDP较少: UDP程序结构较简单 流模式(TCP)与数据报模式(UDP); TCP保证数据正确性,UDP可能丢包 T ...
- 一文搞懂TCP与UDP的区别
摘要:计算机网络基础 引言 网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别. 一.TCP/I ...
随机推荐
- js中访问对象的方法
如果在js中定义了一个变量obj1,如 var obj1 = 234; 那么访问这个边个两的方式至少有两种, 1 window["obj1"],那么值为234, 2 var tar ...
- Flask中全局变量的实现
我们都知道在Flask中g,request,session和request是作为全局对象来提供信息的,既然是全局的又如何保持线程安全呢,接下来我们就看看flask是如何做到这点的.在源码中的ctx.p ...
- (zz)Linux下Gcc生成和使用静态库和动态库详解
http://blog.chinaunix.net/uid-23592843-id-223539.html
- C++ Input & Output
1.C++ I/O各类之间的继承关系图 参考网址: http://www.cplusplus.com/reference/iolibrary/ Note: 在程序中包含iostream文件将自动创建8 ...
- poj3308Paratroopers(最小割)
题目请戳这里 题目大意:给一个n*m的矩阵,给一些点(ri,ci)表示该点在第ri行第ci列.现在要覆盖所有的点,已知覆盖第i行代价为Ri,覆盖第j列代价为Cj.总代价是累乘的,求最小总代价能覆盖所有 ...
- Uva 225 Golygons
这道题如果直接用Dfs,运气好的话是可以直接过的. 但如果要在Dfs的基础上加快速度,剪枝是必不可少的. 我的剪枝策略: 1.当前点(x,y)回到出发点至少需要 |x| +| y| 步,如果剩余的步数 ...
- BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划
题目 1613: [Usaco2007 Jan]Running贝茜的晨练计划 Time Limit: 5 Sec Memory Limit: 64 MB Description 奶牛们打算通过锻炼来 ...
- UVA 10652 Board Wrapping(凸包)
The small sawmill in Mission, British Columbia, hasdeveloped a brand new way of packaging boards for ...
- Pagodas(等差数列)
Pagodas Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- Java集合中对象排序
集合中的对象排序需求还是比較常见的.当然我们能够重写equals方法,循环比較:同一时候Java为我们提供了更易使用的APIs.当须要排序的集合或数组不是单纯的数字型时,通常能够使用Comparato ...