Tcp/iP协议

        毫无疑问,TCP/IP (Transmission Control Protocol/Internet Protocol, 传输控制协议/网际协议)是发展至今最成功的通信协议之一。它起源于20世纪60年代末美国政府资助的一个分组交换网络研究项目,它允许分布在各地的装着完全不同操作系统的计算机互相通信。随着PC的及,TCP/IP 以其开放性的特点,成为了Intermet的基础,通过Internet把全世界数以千万的计算机连接在了一起。

一、TCP/IP结构

TCP/IP协议是一个四层协议,它的结构如图1-1 所示。

                             

1.1每一层负责的功能如下:

1)链路层:有时被称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,它们一起处理与电缆( 或其他任何传输媒介)的物理接口细节。该层包含的协议有: ARP (地址转换协议)和RARP ( 反向地址转换协议)。
2)网络层:有时也被称为互联网层,负责分组在网络中的活动,包括IP协议(网际协议)、ICMP协议( Internet互联网控制报文协议)以及IGMP协议( Internet组管理协议)。
3)传输层:该层主要为两台主机上的应用程序提供端到端的数据通信,它分为两个不同的协议: TCP (传输控制协议)和UDP (用户数据报协议)。TCP协议提供端到端(的质量保证的数据传输,该层负责数据的分组、质量控制和超时重发等,对于应用层来说,就可以忽略这些工作。UDP协议则只提供简单的把数据报从- -端发送到另一端,至于数据是否到达或按时到达、数据是否损坏都必须由应用层来做。这两种协议各有各自的用途,前者可用于面向连接的应用,而后者则在及时性服务中有着重要的用途,如网络多媒体通信等。
4)应用层:该层负责处理实际的应用程序细节,包括大家都十分熟悉的Telnet (电子公告板)、HTTP ( World Wide Web服务)、SMTP (简单邮件传输协议)、FTP (简单文件传输协议)和SNMP (简单网络管理协议)等著名协议。为了更好地理解TCP/IP的四层结构,下 面通过一个具体的示例对其进行说明,示例的网络结构如图1-2所示。

     

        这里顺便介绍一下网桥、路由器和网关的差别。网桥是一种在链路层将不同类型的局域网连接成一个更大的局域网的网络设备,路由器则是在网络层实现该功能,而网关是指连接不同协议簇的进程( 例如TCP/IP和IBM的SNA),它为某个特定的应用程序(常常是电子邮件或文件传输)服务。

二、常用协议

下面简要介绍一些常用的协议。本书的后面章节将详细介绍常用的TCP、UDP、IP层的协议,并给出它们的实现方法。


1.TCP和UDP层协议

这两个协议是最为著名两个的传输层协议,二者都使用IP作为网络层协议。虽然TCP使用不可靠的IP服务,但它却提供一种可靠的传输层服务。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。但是与TCP不同的是,UDP是不可靠的,它不能保证数据报能安全无误地到达最终目的地。基于UDP的应用层协议有很多,包括DNS(域名系统)、TFTP(简单文件传送协议)、BOOTP(引导程序协议)和SNMP(简单网络管理协议)。

2.IP层协议

        该协议同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。ICMP作为IP协议的附属协议,用来与其他主机或路由器交换错误报文和其他重要信息。本书第十章将对ICMP协议及其两个非常重要的应用Ping和Traceroute程序进行详细介绍。

        IP协议的另一个附属协议是IGMP ( Internet组管理协议),它用来把一-个UDP数据报多播或组播到多个主机。

3.数据链路层协议

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

三、 CSocket 类

        CSocket类派生于CAsyncSocket类。该类不但具有CAsyncSocket类的基本功能,还具有串行化功能。

        用户在实际编程中,通过将CSocket类与CSocketFile类和CArchive类一起使用, 能够很好地管理数据以及发送数据。用户使用该类进行网络编程的步骤如下:
(1)创建CSocket类对象。
(2)如果创建服务器端套接字,则调用函数Bind0绑定本地IP和端口,然后调用函数.Listen()监听客户端的请求。如果请求到来,则调用函数AcceptO响应该请求。如果创建客户端套接字,则直接调用函数Connect0连接服务器即可。
(3)创建与CSocket类对象相关联的CSocketFile类对象。
(4)创建与CSocketFile类相关联的CArchive对象。
(5)使用CArchive类对象在客户端和服务器之间进行数据传输。
(6)关闭或销毁CSocket类、CSocketFile 类和CArchive类的3个对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小气鬼944

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值