Ch1:概述
来源:互联网 发布:java const 参数 编辑:程序博客网 时间:2024/06/05 09:40
一、 摘要
本章快速地浏览了TCP/IP协议族,介绍了在后面的章节中将要详细讨论的许多术语和协议。
TCP/IP协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。在TCP/IP中,网络层和运输层之间的区别是最为关键的:网络层(IP)提供点到点的服务,而运输层(TCP和UDP)提供端到端的服务。
在一个互联网上,每个接口都用IP地址来标识,尽管用户习惯使用主机名而不是IP地址。域名系统为主机名和IP地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服务器使用知名端口号,而客户使用临时设定的端口号。
二、 分层
TCP/IP是一个四层协议系统,如下图所示。
图1. TCP/IP四层协议系统中不同层次的协议
- 链路层。有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。
- 网络层。有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。网络协议包括IP、ICMP、IGMP。
- 运输层。主要为两台主机上的应用程序提供端到端的通信。该层有两种传输协议:TCP和UDP。
- 应用层。负责处理特定的应用程序细节。通用应用程序:Telnet、FTP、SNMP等。
三、 互联网的地址
图2. 五类互联网地址及其范围
四、 封装与分用
4.1 封装
图3. 数据进入协议栈时的封装过程
当应用程序传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。
而首部中为了区分不同协议的数据报文,增加一个标识域。
- 应用层采用端口号才表示不同的应用程序;
- 传输层存入一个8 bit的协议域(1:ICMP,2:IGMP,6:TCP,17:UDP);
- 链路层在数据帧中加入16 bit的帧类型域表示IP、ARP、RARP等数据帧(ARP:0x0806,RARP:0x0835,IP:0x0800)。
4.2 分用
图4. 以太网数据帧的分用过程
分用是封装的一个逆过程。当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。
五、 端口号
- TCP和UDP采用16 bit的端口号来标识应用程序,即共有6536个可用端口(0~65535)。
- TCP/IP协议实现中的数值端口号——FTP:21,SSH:22,Telnet:23,DNS:53,TFTP:69 等。
- 大多数TCP/IP实现给临时端口分配1024~5000之间的端口号,Internet上不常用服务使用大于5000的端口号。
六、 应用编程接口
TCP/IP协议的应用程序通常采用两种应用编程接口(API,Application Programming Interface):
- socket,有时称作“ Berkeley socket”,表明它是从伯克利版发展而来的。
- TLI(运输层接口:Transpot Layer Interface),是由AT&T开发的,有时称作XTI(X/Open运输层接口),以承认X/ Open这个自己定义标准的国际计算机生产商所做的工作。XTI实际上是TLI的一个超集。
(完)
0 0
- Ch1:概述
- Ch1:概述
- 计算机网络复习(Ch1概述)
- 软件测试(第2版)_Paul学习02_01——Ch1测试概述_01
- 软件测试(第2版)_Paul学习02_01——Ch1测试概述_02
- 精粹ch1
- ch1 基础知识
- ch1 开始
- corejsf note ch1
- ch1处理器管理
- java基础ch1
- California Mathmetics-G6-Ch1
- 《走进搜索引擎》-----Ch1---引言
- C++Primer Excise Ch1
- Java OOP ch1
- CPP_Primer 笔记-ch1
- Ch1-4: anagram string
- Java tuts notes - ch1
- 新浪、网易、搜狐博客(QQ空间)视频自动与非自动播放代码设置
- 材料院项目之pyqt学习(一)——Hello PyQt
- Invalid Code Signing Entitlements..This value should be a string starting with your TEAMID 解决方案
- 黑马程序员-----JAVA数组
- xml与html比较的优缺点
- Ch1:概述
- Hadoop FileSystem常用API的使用
- 全排列问题的STL用法
- [ jQuery] 你还在使用jquery的click(),bind()方法么?
- 听见向日葵的微笑
- linux 中进程及任务管理命令
- 1071:验证角谷猜想
- Eclipse安装CDT开发C/C++
- Android 代码中设置字体颜色