前述

       各种L2数据网具有不同的通信协议与帧结构,其网络节点设备可以是各种类型的数据交换机(X.25、FR、Ethernet和ATM等分组交换机);而L3数据网(IP网或internet)具有统一的TCP/IP通信协议和分组结构,全网采用统一格式的IP地址,节点设备统一采用面向无连接的路由器。为便于理解,我们可以将L3数据网简单地理解为构建在L2数据网平台上的一个路由器网。

1 internet概述

internet是一个由众多网络互联而成的世界范围内的计算机网络。从通信的角度来看,internet是一个以TCP/IP统一的标准,将世界范围内多个国家的部门和机构的两层计算机子网联接而成的三层数据网。从资源角度来看,internet是一个集各领域、各学科、各种应用等各种资源为一体的资源数据网。

internet具有以下特点:

(1) TCP/IP是internet的基础与核心,依靠TCP/IP协议实现了网络的互联;

(2) 用户使用internet时无需了解网络底层(物理层和链路层)的结构,十分方便;

(3) 随着internet主干线路与接入带宽的不断拓展,internet最终将取代现有的电话网、数据网和有线电视网,成为三网合一的综合多媒体业务网;

(4) 世界上没有对internet上通信进行统一管理的机构,internet上的许多服务和功能都是由用户开发、经营和管理的,因此从经营角度看internet是一个用户的网络。

2 TCP/IP 协议

internet实现互联的关键是TCP/IP协议。在internet内部,计算机之间互相发送信息包进行通信,TCP/IP协议对这种信息包的传输方式作了具体的规定。

2.1 IP协议(因特网协议)

2.1.1 IP协议概述

IP协议定义在OSI-RM第三层———网络层,是internet最重要的协议。在IP协议中规定了在internet上进行通信时应遵守的规则,例如IP数据包的组成、路由器如何将IP数据包送到目的主机等。

各种物理网络在链路层(二层)所传输的基本单元为帧(MAC帧),其帧格式随物理网络而异,各物理网络的物理地址(MAC地址)也随物理网络而异。IP协议的作用就是向传输层(TCP层)提供统一的IP包,即将各种不同类型的MAC帧转换为统一的IP包,并将MAC帧的物理地址变换为全网统一的逻辑地址(IP地址)。这样,这些不同物理网络MAC帧的差异对上层而言就不复存在了。正因为这一转换,才实现了不同类型物理网络的互联。

IP协议面向无连接,IP网中的节点路由器根据每个IP包的包头IP地址进行寻址,这样同一个主机发出的属于同一报文的IP包可能会经过不同的路径到达目的主机。

2.1.2 IP协议的功能

IP协议主要具有以下几部分功能:

(1) 寻址

这一功能将在下一节中作为专题进行讨论。

(2) 路由选择

路由选择是以单个IP数据包为基础的,概括而言是确定某个IP数据包到达目的主机需经过哪些路由器。路由选择可以由源主机决定,也可以由IP数据包所途经的路由器决定。

在IP协议中,路由选择依靠路由表进行。在IP网上的主机和路由器中均保存了一张路由表,路由表指明下一个路由器(或目的主机)的IP地址。路由表由目的主机地址和去往目的主机的路径两部分组成。其中,去往目的主机的路径通常是下一个路由器的地址,也可是目的主机的IP地址。

(3) 分段与组装

IP数据包在实际传送过程中所经过的物理网络帧的最大长度可能不同,当长IP数据包需通过短帧子网时,需对IP数据包进行分段与组装。

IP协议实现分段与组装的方法是给每个IP数据包分配一个惟一的标志符,且报头部分还有与分段与组装相关的分段标记和位移。IP数据包在分段时,每一段需包含原有的标志符。为了提高效率、减轻路由器的负担,重新组装工作由目的主机来完成。

2.2 TCP协议(传输控制协议)

2.2.1 TCP协议概述

TCP协议位于OSI-RM第四层———传输层,是一个端对端、面向连接的协议。该协议弥补了IP协议的某些不足,其中比较突出的有两个方面:一是TCP协议能够保证在IP数据包丢失时进行重发,能够删去重复收到的IP数据包,还能保证准确地按原发送端的发送顺序重新组装数据;二是TCP协议能区别属于同一应用报文的一组IP数据包,并能鉴别应用报文的性质。这一功能使得某些具有四层协议功能的高端路由器可以对IP数据包进行流量、优先级、安全管理、负荷分配和复用等智能控制。

2.2.2 TCP协议的功能

(1) 保证传输的可靠性

TCP协议是面向连接的。所谓连接,是指在进行通信之前,通信双方必须建立连接才能进行通信,而在通信结束后终止其连接。相对于面向无连接的IP协议而言,TCP协议具有高度的可靠性。

当目的主机接收到由源主机发来的IP包后,目的主机将向源主机回送一个确认消息,这是依靠目的主机的TCP协议来完成的。TCP协议中有一个重传记时器(RTO),当源主机发送IP包即开始记时。如在超时之前收到确认信号,则记时器回零;如果记时器超时,则说明该IP包已丢失,源主机应进行重传。对于重传记时器,确定合适的记时时长是十分重要的,它由往返时间来决定。TCP协议能够根据不同情况自动调节记时时长。

需要说明的是,TCP协议所建立的连接是端到端的连接,即源主机与目的主机间的连接。internet中每个转接节点(路由器)对TCP协议段透明传输。

总之,IP协议不提供差错报告和差错纠正机制,而TCP协议向应用层提供了面向连接的服务,以确保网络上所传送的数据包被完整、正确、可靠地接收。一旦数据有损伤或丢失,则由TCP协议负责重传,应用层不参与解决。

(2) 提供部分应用层信息的功能

在TCP协议之上是应用层协议(如FTP、SMTP、TELNET等),最终需依靠它们实现主机间的通信。TCP协议携带了部分应用层信息,可用来区别同一报文数据流的一组IP包及其性质。

TCP协议对这些应用层协议规定了整数标志符,称为端口序号。被规定的端口序号成为保留端口,其值在0~1 023范围内(如端口序号23,用于远程终端服务)。此外还有自由端口序号,供个人程序使用,或者用来区分两台主机间相同应用层协议的多个通信,即两台主机间复用多个用户会话连接。

进行通信的每台主机的每个用户会话连接都有一个插口序号,它由主机的IP地址和端口序号组成。在internet中插口序号是惟一的,一对插口序号惟一地标识了一个端口的连接(发端插口序号=源主机IP地址+源端口序号,收端插口序号=目的主机IP地址+目的端口序号)。利用插口序号可在目的主机中区分不同源主机对同一个目的主机相同端口序号的多个用户会话连接。

在TCP协议段的头部各域中具有码位项。其中,SYN码位为应用数据流的开始位(当SYN置1,表示该IP数据包为某一应用报文的第一份数据包),FIN码位为应用数据流的结束位(当FIN置1时,表示此时数据包为某应用报文的最后一份数据包)。因此可利用SYN/FIN两个码位来规定某一应用报文(或某一应用数据流)的开始与结束。

TCP协议就是利用端口序号和SYN/FIN码位来区分应用数据流并判断其性质的,从而使具有四层功能的高端路由器具有某些对应用数据流的控制功能。

3 TCP/IP 的工作原理

下面以采用TCP/IP协议传送文件为例,说明TCP/IP的工作原理,其中应用层传输文件采用文件传输协议(FTP)。

TCP/IP协议的工作流程如下:

●在源主机上,应用层将一串应用数据流传送给传输层。

●传输层将应用层的数据流截成分组,并加上TCP报头形成TCP段,送交网络层。

●在网络层给TCP段加上包括源、目的主机IP地址的IP报头,生成一个IP数据包,并将IP数据包送交链路层。

●链路层在其MAC帧的数据部分装上IP数据包,再加上源、目的主机的MAC地址和帧头,并根据其目的MAC地址,将MAC帧发往目的主机或IP路由器。

●在目的主机,链路层将MAC帧的帧头去掉,并将IP数据包送交网络层。

●网络层检查IP报头,如果报头中校验和与计算结果不一致,则丢弃该IP数据包;若校验和与计算结果一致,则去掉IP报头,将TCP段送交传输层。

●传输层检查顺序号,判断是否是正确的TCP分组,然后检查TCP报头数据。若正确,则向源主机发确认信息;若不正确或丢包,则向源主机要求重发信息。

●在目的主机,传输层去掉TCP报头,将排好顺序的分组组成应用数据流送给应用程序。这样目的主机接收到的来自源主机的字节流,就像是直接接收来自源主机的字节流一样。

转载自:http://itlab.idcquan.com/cisco/TCP/18213.html

TCP/IP协议原理【转载】的更多相关文章

  1. TCP/IP协议原理与应用笔记18:构成子网和超网

    1. 引言: (1)类别IP编址(Classful IP)的缺陷 • 固定的3种IP网络规模      C类地址:少于255台主机的网络      B类地址:介于255~65535台主机的网络     ...

  2. TCP/IP协议原理与应用笔记17:IP编址(重点)

    1. IP地址(通用标识符) 对于同一个网络设备(主机或路由器)的不同网络连接,需要不同的IP地址进行标识 2. 主机标识符 主要有下面三种方式的主机标识方式: (1)Name:是什么,可读性强(了解 ...

  3. TCP/IP协议原理学习笔记

    昨天学习了杨宁老师的TCP/IP协议原理第一讲和第二讲,主要介绍了OSI模型,整理如下: OSI是open system innerconnection的简称,即开放式系统互联参考模型,它把网络协议从 ...

  4. TCP/IP协议原理与应用笔记10:TCP/IP协议族

    1. 协议族视图如下:(这里我们列举重要的,并不是所有的) (1)网络接入层(数据链路层 和 物理层): 通过接入的物理网络的 功能 和 覆盖范围 进行分析划分为: •LANs :局域网(Local ...

  5. TCP/IP协议原理与应用笔记07:HTTP、TCP/IP与socket区别

    1. TCP/IP协议与HTTP协议区别:      HTTP 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件 ...

  6. TCP/IP协议原理与应用笔记05:TCP/IP协议下的网关

    大家都知道,从一个房间走到另一个房间,必然要经过一扇门.同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关.顾名思义,网关(Gateway)就是一个网络连接到另一个网络的& ...

  7. Python Web学习笔记之TCP/IP协议原理与介绍

    HTTP.FTP.SMTP.Telnet等等协议,哦!那个HTTP协议啊就是访问网页用的那个协议啊然后那个······其实······你懂得,我们应该从实际来了解他,理解网络协议的作用与功能,然后再从 ...

  8. HTTP协议—— 简单认识TCP/IP协议(转载)

    原文地址(http://www.cnblogs.com/roverliang/p/5176456.html) 1.什么是TCP/IP  如果要了解一个人,可以从他归属的集体聊起来.我们的HTTP协议就 ...

  9. TCP/IP协议原理与应用笔记24:网际协议(IP)之 IP协议的简介

    1. IP协议:(网际协议) 2. IP协议(不可靠无连接数据报协议) (1)连接 vs. 可靠性 连接:面向连接.无连接 可靠:差错控制.流量控制等 面向连接不一定保证可靠,无连接不一定不可靠 在连 ...

随机推荐

  1. 一条命令使win7可以直接运行.net3.5程序

    dism /online /get-features 获取 功能名称 dism /online /enable-feature /featurename:NetFx3  启用win7自带的.net f ...

  2. Java编程思想学习(四) 访问权限

    几种访问权限修饰词 public,protected,private,friendly(Java中并无该修饰词,即包访问权限,不提供任何访问修饰词) 使用时,放置在类中成员(域或方法)的定义之前的,仅 ...

  3. OpenCV中的全景拼接例程

    使用Stitcher类,通过createDefault()方法创建拼接对象,通过stitch()方法执行默认的自动拼接.自动拼接和07年Brown和Lowe发表的论文描述的步骤基本一致,只不过使用的特 ...

  4. 【codevs1409】 拦截导弹 2

    http://codevs.cn/problem/1409/ (题目链接) 题意 给出n个三维的导弹,每次拦截只能打x,y,z严格上升的若干个导弹,求最多能一次拦截下多少个导弹,以及最少拦截几次将所有 ...

  5. POJ1979 Red and Black

    速刷一道DFS Description There is a rectangular room, covered with square tiles. Each tile is colored eit ...

  6. Maven学习笔记-02-Maven项目打包配置与测试

    一 Maven项目打包配置 1 为整个项目统一指定字符集 <properties> <project.build.sourceEncoding>UTF-</project ...

  7. MyEclipse------遍历某个路径下的(所有或特定)文件和目录

    usebean包(自己定义的,在src文件夹下面)里的java文件 FileAccept.java package usebean; import java.io.File; import java. ...

  8. Protocol Buffers(Protobuf) 官方文档--Protobuf语言指南

    Protocol Buffers(Protobuf) 官方文档--Protobuf语言指南 约定:为方便书写,ProtocolBuffers在下文中将已Protobuf代替. 本指南将向您描述如何使用 ...

  9. 在xib里,拖一个UIView到UITableView中作为tableHeaderView

    原贴地址:http://blog.csdn.net/haoxinqingb/article/details/41683881 内容 在xib里,拖一个UIView到UITableView中作为tabl ...

  10. PHP大批量插入数据库的3种方法和速度对比

    第一种,使用insert into 插入,最后显示为:23:25:05 01:32:05 也就是花了2个小时多! $params = array(‘value'=>'50′); set_time ...