转载 TCPIP学习笔记之概述

1、分层

网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如 T C P / I P,是一组不同层次上的多个协议的组合。 T C P / I P通常被认为是一个四层协议系统,其示意图如下:

(图1)TCP/IP协议族的四个层次

每一层负责不同的功能:

1) 链路层:

有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。

2)网络层:

有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在T C P /I P协议族中,网络层协议包括I P协议(网际协议),I C M P协议(I n t e rn e t互联网控制报文协议) ,以及I G M P协议(I n t e r n e t组管理协议)。

3)运输层:

主要为两台主机上的应用程序提供端到端的通信。在 T C P / I P协议族中,有两个互不相同的传输协议:T C P(传输控制协议)和U D P(用户数据报协议)。T C P为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。

而另一方面,U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。 任何必需的可靠性必须由应用层来提供。

注:这两种运输层协议分别在不同的应用程序中有不同的用途。

4 ) 应用层:

负责处理特定的应用程序细节。几乎各种不同的 T C P / I P实现都会提供下面这些通用的应用程序:

• Telnet、FTP和e-mail等

• FTP 文件传输协议。

• SMTP 简单邮件传送协议。

• SNMP 简单网络管理协议。

• ...

2、TCP/IP的分层

 在T C P / I P协议族中,有很多种协议。

(图2)TCP/IP协议族中不同层次的协议

3、数据的封装

当应用程序用T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息) ,该过程如图3所示。T C P传给I P的数据单元称作 T C P报文段或简称为T C P段(T C P s e g m e n t) 。I P传给网络接口层的数据单元称作I P数据报(IP datagram)。通过以太网传输的比特流称作帧(Fr a m e )。

以太网数据帧的物理特性是其长度必须在 4 6~1 5 0 0字节之间。分组既可以是一个I P数据报,也可以是I P数据报的一个片(f r a g m e n t) 。

(图3) 数据进入协议栈时的封装过程

U D P数据与T C P数据基本一致。唯一的不同是 U D P传给I P的信息单元称作 U D P数据报(UDP datagram) ,而且U D P的首部长为8字节。

由于T C P、U D P、I C M P和I G M P都要向I P传送数据,因此I P必须在生成的I P首部中加入某种标识,以表明数据属于哪一层。为此, I P在首部中存入一个长度为8 b i t的数值,称作协议域。1表示为I C M P协议,2表示为I G M P协议,6表示为T C P协议,1 7表示为U D P协议。

类似地,许多应用程序都可以使用 T C P或U D P来传送数据。运输层协议在生成报文首部时要存入一个应用程序的标识符。 T C P和U D P都用一个1 6 b i t的端口号来表示不同的应用程序。T C P和U D P把源端口号和目的端口号分别存入报文首部中。

网络接口分别要发送和接收I P、A R P和R A R P数据,因此也必须在以太网的帧首部中加入应用程序某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个 16 bit的帧类型域。

4、以太网数据帧的分用

当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(D e m u l t i p l e x i n g),图4显示了该过程是如何发生的。

(图4) 以太网数据帧的分用过程

为协议I C M P和I G M P定位一直是一件很棘手的事情。在(图2)中,把它们与I P放在同一层上,那是因为事实上它们是I P的附属协议。但是在这里,我们又把它们放在I P层的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。

对于A R P和R A R P,在这里把它们放在以太网设备驱动程序的上方,这是因为它们和I P数据报一样,都有各自的以太网数据帧类型。但是有时又把A R P作为以太网设备驱动程序的一部分,放在I P层的下面,其原因在逻辑上是合理的。

对于解包T C P时,是通过目的端口号、源 I P地址和源端口号进行解包。

注:为方便大家,若需下载完整文档,请点击

http://files.cnblogs.com/tdyizhen1314/TCP-IP%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B9%8B%E6%A6%82%E8%BF%B0.zip

作者:tdyizhen1314

转载 TCPIP学习笔记之概述

时间: 2024-11-05 02:34:25

转载 TCPIP学习笔记之概述的相关文章

学习笔记-性能测试-概述

性能测试的目的,什么是性能测试? 目的主要有四点:1评估系统能力,2寻找系统弱点(瓶颈),3系统调优,4验证系统可靠性,稳定性. 通俗的来说,性能测试的目的就是验证系统好不好用,就像功能测试验证系统是否可以用. 比较官方点的定义是: 是指在某个特定的硬件.软件.网络环境下通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试. 性能测试的步骤? 设计测试方案 选择测试工具 搭建测试环境 设计测试场景 执行测试 分析测试结果 性能选择的标准? 达到客户的需求 新系统至

Struts2 学习笔记(概述)

Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并实现应用的功能.通常分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单信息.用户信息等:而业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等. 封装应用状态:某些应用数据封装起来,使得视图只能通过接口获取对应的数据 响应状态查询:对应用的状态改变进行处理 暴露应用功能:暴露接口 通

转载-Python学习笔记之文件读写

Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题:其他文件的读写及编码相关详见专题的博文. open()   close()     with open(...) as ... 看以下示例就能了解 Python 的 open() 及 close() 函数.这边调用 read()方法可以一次读取文件的全部内容,Python把

FFMPEG基础库编程开发学习笔记——FFMPEG概述

声明一下:这些关于ffmpeg的文章只是用于记录我的学习历程和以便于以后查阅,文章中的一些文字可能是直接摘自于其他文章.书籍或者文献,学习ffmpeg相关知识是为了使用在Android上,我也才是刚开始接触学习,如有不对之处还请指出. 1.FFMPEG简介 Open-source multimedia library,遵从GPL/LGPL协议,ffmpeg只是一个商标,它的所有权属于ffmpeg org.由Fabrice Bellard(法国著名程序员 Born in1972)于2000年发起创

转载-python学习笔记之输入输出功能读取和写入数据

读取.写入和 Python 在 “探索 Python” 系列以前的文章中,学习了基本的 Python 数据类型和一些容器数据类型,例如tuple.string 和 list.其他文章讨论了 Python 语言的条件和循环特性,以及它们如何与容器数据类型进行协作来简化编程任务.编写程序的最后一个基本步骤就是从文件读取数据和把数据写入文件.阅读完这篇文章之后,可以在自己的 to-do 列表中加上检验这个技能学习效果的任务. 简单输出 贯穿整个系列,一直用 print 语句写入(输出)数据,它默认把表

Java基础学习笔记-Java概述与环境配置

第一篇 Java 概述与环境配置 一.基础常识:   1.软件开发: <1>什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合. 常见的软件: 系统软件:如DOS,windows, Linux等. 应用软件:如扫雷,迅雷,QQ等. <2>什么是开发? 制作软件 <3>人机交互 软件的出现实现了人与计算机之间的更好的交互.   交互方式: 图形化界面:这种方式简单直观,使用者易于接受,容易上手操作. 命令行方式:需要有一个控制台,输入特定的指令,让计算机完

mongodb 学习笔记 01 -- 概述,安装,运行

mongodb 概述 mongodb 是文档型NoSQL数据库,存储 bson–> json二进制.内部执行引擎为js解释器,把文档存储成bson结构,在查询时,转化为js对象.并可以通过js语法操作. mongodb 与传统数据库比 传统数据库是结构化数据库,列的个数类型都一样 文档数据库 以文档为单位 比如: { id:1, name: "billvsme", age:21, } { id:2, name: "zhangshan", phone:12313

RMAN_学习笔记1_RMAN概述和体系结构

2014-12-23 Created By BaoXinjian 本文转载乐沙弥大神 一.摘要 是一种用于集备份(backup).还原(restore)和恢复(recover)数据库于一体的Oracle 工具,支持命令行及图形界面操作 能够备份整个数据库.表空间.数据文件.控制文件.归档文件以及Spfile参数文件. 支持增量数据块级别的备份和块级别的介质恢复 可以保存频繁执行的备份恢复脚本 可以实现数据库的克隆.使用RMAN建立备用数据库 支持镜像备份与备份集,可以备份到磁盘与磁带 管理备份与

转载-python学习笔记之文件I/O

Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下: #!/usr/bin/python # -*- coding: UTF-8 -*- print "Python 是一个非常棒的语言,不是吗?"; 你的标准屏幕上会产生以下结果: Python 是一个非常棒的语言,不是吗? 读取