译者:华科小涛: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的区别的更多相关文章

  1. OSI参考模型及各层功能,TCP与UDP的区别

    OSI参考模型:ISO/IEC 7498标准定义了网络互联的7层结构模型,即开放系统互连参考模型. OSI参考模型定义了开放系统的层次结构.层次之间的相互关系,以及各层所包括的可能的服务.OSI的服务 ...

  2. TCP与UDP的区别

    TCP与UDP的区别 TCP面向连接:UDP是无连接,即发送数据之前不需要建立连接 TCP提供可靠的服务,TCP连接传送的数据,无差错.不丢失.不重复,且按顺序到达:UDP尽最大努力交付,即不保证可靠 ...

  3. TCP和UDP的区别(转)

    TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  4. TCP与UDP的区别(转)

    源:http://blog.chinaunix.net/uid-20745340-id-1878774.html 参考:TCP协议与UDP协议的区别 TCP与UDP的区别 中国移动.中国联通推行的GP ...

  5. 【基础网络】TCP与UDP 的区别

    TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  6. TCP和UDP的区别(Socket)

    TCP和UDP区别 TCP和UDP编程区别 TCP编程的服务器端一般步骤是:  1.创建一个socket,用函数socket():  2.设置socket属性,用函数setsockopt(); * 可 ...

  7. 【转】TCP/IP协议中TCP和UDP的区别

    TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  8. 知其所以然~tcp和udp的区别

    TCP UDP TCP与UDP基本区别 基于连接与无连接 TCP要求系统资源较多,UDP较少: UDP程序结构较简单 流模式(TCP)与数据报模式(UDP); TCP保证数据正确性,UDP可能丢包 T ...

  9. 一文搞懂TCP与UDP的区别

    摘要:计算机网络基础 引言 网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别. 一.TCP/I ...

随机推荐

  1. CoffeeScript 入门笔记

    写在前面: 被英文版指南坑了...闹了很久才明白.coffee怎么用.安装前需要有稳定版 Node.js, 和 npm (Node Package Manager). 借助 npm 可以安装 Coff ...

  2. 建立dblink,clob

    建立dblink的方法, 如果有个测试库A,要访问生产库里的数据,那么可以直接在测试库A里建立一个dblink,然后数据库A就可以直接访问测试库B的数据了. -- 删除已有的dblink drop d ...

  3. U-Boot在FL2440上移植(三)----支持NAND Flash

    <一>支持NAND Flash 1. 首先在配置文件 include/config/fl2440.h 的宏 CONFIG_COMMANDS 中增加 CFG_CMD_NAND, #defin ...

  4. Linux的起源、特点和版本号

    前言 最近上陈渝老师的<高级操作系统>,需要在ucore实验平台上完成一个麻雀虽小五脏俱全的OS,本着看过一小半<30天自制操作系统>的自信,以为这不过是小case,怎料被虐得 ...

  5. Qt学习 之 多线程程序设计(QT通过三种形式提供了对线程的支持)

    QT通过三种形式提供了对线程的支持.它们分别是, 一.平台无关的线程类 二.线程安全的事件投递 三.跨线程的信号-槽连接. 这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势.多线 ...

  6. Windows Azure 社区新闻综述(#77 版)

    欢迎查看最新版本的每周综述,其中包含有关云计算和 Windows Azure 的社区推动新闻.内容和对话.以下是本周的亮点. 文章.视频和博客文章 ·   文章: Windows Azure 表存储简 ...

  7. NOIP2015

    现在来总结一下. 斗地主 这题的题目描述感觉不太清晰,当时有很多人去问,但都没有得到任何回应.好吧,虽然我也是似懂非懂,但是就算看清楚了题目又能怎么样呢. 首先这题只能够搜索吧,或者说是DP,不过有很 ...

  8. poj 2245 Lotto(dfs)

    题目链接:http://poj.org/problem?id=2245 思路分析:无重复元素组合组合问题,使用暴力枚举法,注意剪枝条件. 代码如下: #include <iostream> ...

  9. BNU 沙漠之旅

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=29376 我直接暴力搜索的. 剪枝: 1.步骤最多只有4步,超过4步则退出 2.油的行程相加后的总和距 ...

  10. UI 公钥加密

    RSA算法是一种非对称加密算法,常被用于加密数据传输.如果配合上数字摘要算法, 也可以用于文件签名. 本文将讨论如何在iOS中使用RSA传输加密数据. RSA基本原理 RSA使用"秘匙对&q ...