[译]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 ...
随机推荐
- (zz)Linux下Gcc生成和使用静态库和动态库详解
http://blog.chinaunix.net/uid-23592843-id-223539.html
- 【转】论文、会议、期刊评价|Indicate paper, conference, Journal
转自“浙江大学计算机学院软硬件协同设计实验室”:http://multicore.zju.edu.cn/fatlab/Indicate-paper.htm 1 体系结构领域,排名为 ...
- 顺为资本CEO许达来:为什么说中国创业者很幸福?(附PPT)
顺为资本创始合伙人许达来 编者按:许达来,顺为资本创始合伙人及CEO,代表性投资项目包括小米科技.丁香园.一起作业.加一联创.金山软件及兴达国际等. 本文为许达来在新浪创业举办的新创课活动上的内容分享 ...
- python的二维数组操作
需要在程序中使用二维数组,网上找到一种这样的用法: ? 1 2 3 4 5 6 #创建一个宽度为3,高度为4的数组 #[[0,0,0], # [0,0,0], # [0,0,0], # [0,0,0] ...
- java学习之总结
学的时候忘记写博客,现在java SE学完了一口气把写的代码发了上来没有做什么补充,其中有很多知识漏掉了,学的有点不扎实,接下来写写项目来稳好基础
- python获取当前路径的方法
>>> import os>>> homedir = os.getcwd()>>> print homedirD:\python\test > ...
- android应用如何启动另外一个apk应用
在开发的过程中,经常会遇到在一个应用中启动另外一个apk应用的情况 问题的核心点在于我们要拿到第三方apk的package名称跟class名称, 如:package名称是com.funcity.tax ...
- [Android] 文件夹下文件的个数限制
Android机子的文件夹下有存放文件的个数限制,做了下测试,如下: 在创建第65534个文件时抛出了异常: java.io.IOException: open failed: ENOSPC (No ...
- 免费的HTML5连载来了《HTML5网页开发实例具体解释》连载(六)媒体查询
响应式设计的还有一个重要技术手段是媒体查询.假设仅仅是简单的设计一个流式布局系统,那么能够保证每一个网格按比例的放大和缩小,但有可能会使得在小屏幕下(如手机设备)网格太小而严重影响阅读,这种设计称不上 ...
- ubuntu ???????????? no permissions 问题解决
近期的一个项目须要用到linux开发android程序! 发现ubuntu有小米开发连接不上! 搞了一个下午才搞成功! 看看吧! 小米手机利用USB连接到Ubuntu 10.04系统.执行以下的命令 ...