tcpip详解:TCP/IP详解(一)

来源:http://itbbs.pcshow.net/viewthread.php?tid=350149539&extra=page%3D5%26filter%3Ddigest

TCP/IP详解


很多区别厂家生产各种型号计算机它们运行完全区别操作系统但TCP/IP协议组件允许它们互相进行通信点很让人感到吃惊作用已远远超出了起初设想TCP/IP起源于60年代末美国政府资助个分组交换网络研究项目到现在90年代已发展成为计算机的间最常应用组网形式它是个真正开放系统协议组件定义及其多种实现可以不用花钱或花很少钱就可以公开地得到它成为被称作"全球互联网"或"因特网"(Internet)基础该广域网(WAN)已包含超过100万台遍布世界各地计算机


、.分层

网络协议通常分区别层次进行开发层分别负责区别通信功能个协议组件比如TCP/IP组区别层次上多个协议组合TCP/IP通常被认为是个 4层协议系统

TCP/IP协议组件 4个层次

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

2. 网络层有时也称作互连网层处理分组在网络中活动例如分组路由选择在TCP/IP协议组件中网络层协议包括IP协议(网际协议)ICMP协议(Internet互连网控制报文协议)以及IGMP协议(Internet组管理协议)

3. 运输层主要为两台主机上应用提供端到端通信在TCP/IP协议组件中有两个互不相同传输协议:TCP(传输控制协议)和UDP(用户数据报协议)

TCP为两台主机提供高可靠性数据通信它所做工作包括把应用交给它数据分成合适小块交给下面网络层确认接收到分组设置发送最后确认分组超时时钟等由于运输层提供了高可靠性端到端通信因此应用层可以忽略所有这些细节

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

这两种运输层协议分别在区别应用中有区别用途

4. 应用层,负责处理特定应用细节几乎各种区别TCP/IP实现都会提供下面这些通用应用:

Telnet 远程登录
FTP 文件传输协议
SMTP 用于电子邮件简单邮件传输协议
SNMP 简单网络管理协议


2、通过路由器连接两个网络

在TCP/IP协议组件中网络层IP提供种不可靠服务也就是说它只是尽可能快地把分组从源结点送到目结点但是并不提供任何可靠性保证而另方面TCP在不可靠IP层上提供了个可靠运输层为了提供这种可靠服务TCP采用了超时重传发送和接收端到端确认分组等机制由此可见运输层和网络层分别负责区别功能

从定义上看个路由器具有两个或多个网络接口层(它连接了两个或多个网络)任何具有多个接口系统英文都称作是多接口multihomed个主机也可以有多个接口般不称作路由器, 除非它功能只是单纯地把分组从个 接口传送到另个接口同样路由器并不定指那种在互连网中用来转发分组特殊硬件盒大多数TCP/IP实现也允许个多接口主机来担当路由器功能但是主机为此必须进行特殊配置在这种情况下我们既可以称该系统为主机(当它运行某应用如FTP或Telnet)也可以称的为路由器(当它把分组从个网络转发到另个网络时)我们在区别场合下使用区别术语

互连网目标的是在应用中隐藏所有物理细节虽然这点在由两个网络组成互连网中并不很明显但是应用层不能关心(也不关心)台主机是在以太网上而另台主机是在令牌环网上它们通过路由器进行互连随着增加区别类型物理网络可能会有20个路由器但应用层仍然是物理细节隐藏使得互连网功能非常强大也非常有用

连接网络个途径是使用网桥网桥是在链路层上对网络进行互连而路由器则是在网络层上对网络进行互连网桥使得多个局域网(LAN)组合在这样对上层来说就好像是个局域网

TCP /IP倾向于使用路由器而不是网桥来连接网络

3、TCP/IP协议组件

TCP和UDP是两种最为著名运输层协议 2者都使用IP作为网络层协议

虽然TCP使用不可靠IP服务但它却提供种可靠运输层服务

UDP为应用发送和接收数据报个数据报是指从发送方传输到接收方个信息单元(例如发送方指定定字节数信息)但是和TCP区别UDP是不可靠它不能保证数据报能安全无误地到达最终目SNMP(简单网络管理协议)也使用了UDP协议但是由于它还要处理许多其他协议因此留到后面再进行讨论

IP是网络层上主要协议同时被TCP和UDP使用TCP和UDP每组数据都通过端系统和每个中间路由器中IP层在互连网中进行传输

ICMP是IP协议附属协议IP层用它来和其他主机或路由器交换报文和其他重要信息尽管ICMP主要被IP使用但应用也有可能访问它两个流行诊断工具Ping和Traceroute它们都使用了ICMP

IGMP是Internet组管理协议它用来把个UDP数据报广播(把个UDP数据报发送到某个指定网络上所有主机)到多个主机

ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用特殊协议用来转换IP层和网络接口层使用地址

4、互连网地址

互连网上每个接口必须有个唯Internet地址(也称作IP地址)IP地址长32 bitInternet地址并不采用平面形式地址空间如123等IP地址具有结构. 这些32位地址通常写成 4个十进制其中每个整数对应个字节这种表示思路方法称作“点分十进制表示法”(dotted decimal notation)

需要再次指出多接口主机具有多个IP地址其中每个接口都对应个IP地址

由于互连网上每个接口必须有个唯IP地址因此必须要有个管理机构为接入互连网网络分配IP地址这个管理机构就是互连网络信息中心(Internet Network Information Centre)称作InterNICInterNIC只分配网络号主机号分配由系统管理员来负责

Internet注册服务(IP地址和DNS域名)过去由NIC来负责其网络地址是nic.ddn.mil1993年4月1日InterNIC成立现在NIC只负责处理国防数据网注册请求所有其他Internet用户注册请求均由InterNIC负责处理其网址是:rs.ernic.net

事实上InterNIC有 3部分组成:注册服务(rs.ernic.net)目录和数据库服务(ds.ernic.net)以及信息服务(is.ernic.net)

IP地址有 3类:单目传送地址(目标为单个主机)广播传送地址(目端为给定网络上所有主机)以及多目传送地址(目端为同组内所有主机)

5、域名系统

尽管通过IP地址可以识别主机上网络接口进而访问主机但是人们最喜欢使用还是主机名在TCP/IP领域中域名系统(DNS)是个分布数据库由它来提供IP地址和主机名的间映射信息

现在我们必须理解任何应用都可以个标准来查看给定名字主机IP地址类似地系统还提供个逆――给定主机IP地址查看它所对应主机名

大多数使用主机名作为参数应用也可以把IP地址作为参数当我们用Telnet进行远程登录时我们既可以指定个主机名也可以指定个IP地址

6、封装

当应用用TCP传送数据时数据被送入协议栈中然后逐个通过每层直到被当作串比特流送入网络其中每层对收到数据都要增加些首部信息(有时还要增加尾部信息)TCP传给IP数据单元称作TCP报文段或简称为TCP段(TCP segment)IP传给网络接口层数据单元称作IP数据报(IP datagram)通过以太网传输比特流称作帧(frame)以太网数据帧物理特性是其长度必须在46-1500字节的间

所有Internet标准和大多数有关TCP/IP书都使用octet这个术语来表示字节使用这个过分雕琢术语是有历史原因TCP/IP很多工作都是在DEC-10系统上进行但是它并不使用8 bit字节由于现在几乎所有计算机系统都采用8 bit字节因此我们在此使用字节()这个术语

更准确地说IP和网络接口层的间传送数据单元应该是分组(packet)分组既可以是个IP数据报也可以是IP数据报个片(fragment)

UDP数据和TCP数据基本区别是UDP传给IP信息单元称作UDP数据报(UDP datagram)而且UDP首部长为8字节

由于TCPUDPICMP和IGMP都要向IP传送数据因此IP必须在生成IP首部中加入某种标识以表明数据属于哪为此IP在首部中存入个长度为8比特数值称作协议域1表示为ICMP协议2表示为IGMP协议6表示为TCP协议17表示为UDP协议

类似地许多应用都可以使用TCP或UDP来传送数据运输层协议在生成报文首部时要存入个应用标识符TCP和UDP都用个16 bit端口号来表示区别应用TCP和UDP把源端口号和目端口号分别存入报文首部中

网络接口分别要发送和接收IPARP和RARP数据因此也必须在以太网帧首部中加入某种形式标识以指明生成数据网络层协议为此以太网帧首部也有个16 bit帧类型域

7、分用(Demultiplexing)

当目主机收到个以太网数据帧时数据就开始从协议栈中由底向上升同时去掉各层协议加上报文首部每层协议盒都要去检查报文首部中协议标识以确定接收数据上层协议这个过程称作分用

为协议ICMP和IGMP定位直是件很棘手事情我们把协议ICMP和IGMP和IP放在同层上那是事实上它们是IP附属协议但是我们又把它们放在IP层上面这是ICMP和IGMP报文都被封装在IP数据报中

对于ARP和RARP我们也遇到类似难题在这里我们把它们放在以太网设备驱动上方这是它们和IP数据报都有各自以太网数据帧类型我们又把ARP作为以太网设备驱动部分放在IP层下面其原因在逻辑上是合理

当进步描述TCP细节时我们将看到协议确实是通过目端口号源IP地址和源端口号进行解包

8、客户服务器模型

大部分网络应用在编写时都假设端是客户端是服务器其目是为了让服务器为客户提供些特定服务

我们可以将这种服务分为两种类型:重复型或并发型

重复型服务器通过以下步骤进行交互:
1. 等待个客户请求到来
2. 处理客户请求
3. 发送响应给发送请求客户
4. 返回步骤1

重复型服务器主要问题发生在2状态在这个时候它不能为其他客户机提供服务

并发型服务器采用以下步骤:
1. 等待个客户请求到来
2. 启动个新服务器来处理这个客户请求在这期间可能生成个新进程、任务或线程并依赖底层操作系统支持这个步骤如何进行取决于操作系统生成新服务器对客户全部请求进行处理处理结束后终止这个新服务器

3.返回步骤1
并发服务器优点在于它是利用生成其他服务器思路方法来处理客户请求也就是说每个客户都有它自己对应服务器如果操作系统允许多任务那么就可以同时为多个客户同时服务

我们对服务器而不是对客户进行分类原因是对于个客户来说它通常并不能够辨别自己是和个重复型服务器或并发型服务器进行对话

般来说TCP服务器是并发而UDP服务器是重复但也存在些例外

9、端口号

我们前面已经指出过TCP和UDP采用16比特端口号来识别应用那么这些端口号是如何选择呢?

服务器般都是通过人们所熟知端口号来识别例如对于每个TCP/IP实现来说FTP服务器TCP端口号都是21每个Telnet服务器TCP端口号都是23每个TFTP(简单文件传输协议)服务器UDP端口号都是69任何TCP/IP实现所提供服务都用众所周知1-1023的间端口号这些人们所熟知端口号由Internet端口号分配机构(Internet Assigned Numbers Authority, IANA)来管理

到1992年为止人们所熟知端口号介于1-255的间256-1023的间端口号通常都是由Unix系统占用以提供些特定Unix服务――也就是说提供些只有Unix系统才有而其他操作系统可能不提供服务现在IANA管理1-1023的间所有端口号

Internet扩展服务和Unix特定服务的间个差别就是Telnet和Rlogin它们 2者都允许我们通过计算机网络登录到其他主机上Telnet是采用端口号为23TCP/IP标准且几乎可以在所有操作系统上进行实现相反Rlogin最开始时只是为Unix系统设计(尽管许多非Unix系统现在也提供该服务)因此在80年代初有名端口号为513

客户端通常对它所使用端口号并不关心只需保证该端口号在本机上是唯就可以了客户端口号又称作临时端口号(即存在时间很短暂)这是它通常只是在用户运行该客户时才存在而服务器则只要主机开着其服务就运行

大多数TCP/IP实现给临时端口分配1024-5000的间端口号大于5000端口号是为其
Tags:  tcpip详解 tcpip详解

延伸阅读

最新评论

发表评论