[译]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 ...
随机推荐
- ThinkPHP第十天(_initialize方法,SESSION销毁,分组配置,include文件引入,JOIN用法)
1.Action类中的_initialize()函数,先于任何自定义操作函数运行,可认为是控制器的前置操作.可用于检测用户是否登录等检测. 如果多个模块(Action)需要相同_initialize( ...
- python2.7_2.2_在套接字服务器上使用ForkingMixIn
Linux系统下才能用本程序.因为有Frok新的进程.... 代码如下: # -*- coding: utf-8 -*- import os import socket import threadin ...
- Python学习之路——函数
一.Python2.X内置函数表: 注:以上为pyton2.X内置函数,官方网址:https://docs.python.org/2/library/functions.html 二.Python3. ...
- poj 1715 Hexadecimal Numbers 排列组合
/** 大意: 给定16进制数的16个字母,,求第k大的数,,要求数的长度最大为8.,并且每个数互不相同. 思路: 从高到低挨个枚举,每一位能组成的排列数 ,拿最高位来说,能做成的排列数为15*A(1 ...
- 高级UNIX环境编程4 文件和目录
#include<sys/stat.h> stat fstat lstat fchmod 对已打开的文件操作
- QT设置前景图位置(配色简单漂亮)
QPushButton { background-image: url(:/Resources/green_click.png); image: url(:/Resources/toolsbutton ...
- QNetworkAccessManager跳转URL处理(使用QNetworkRequest::RedirectionTargetAttribute获得跳转URL)
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*))); void Mai ...
- python概要
python与r语言接口Rpy,统计 科学计算,数值拟合:numpy,scipy 可视化2d:matplotlib,Pylab 可视化3d:mayaviz 复杂网络:networkx 交互终端: bs ...
- Linux编程---I/O部分
非常多函数都能够在网上找到,也比較基础,所以原型仅仅给出了函数名.详细用到再man吧. 输入输出是个非常重要的一块内容.差点儿网络相关的东西基本都是靠底层IO调用来实现的. 好吧.还是先踏踏实实的介绍 ...
- 周根项《一分钟速算》全集播放&下载地址
点击图片就可以观看 ↓↓↓↓↓↓↓↓ 第1章:指算法 周根项<一分钟速算>第1章:指算法 第一节 对手的认识 周根项<一分钟速算>第1章:指算法 第二节 个位数比十位数大1乘以 ...