TCP/IP基础协议

TCP/IP协议(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是Internet中计算机进行通信的标准,其命名起源于该组协议中最重要的两个协议TCP和IP。任何关于Internet协议的讨论必须由TCP/IP开始,它也是其他所有协议的基础。TCP/IP协议是Internet网络的共同语言,主机之间必须利用TCP/IP互通信息。
  TCP/IP协议目前已经成为发展最成功的通信协议之一,它起源于20世纪60年代末美国政府资助的一个分组交换网络研究项目,允许分布在各地的使用不同操作系统的网络进行通信。随着世界范围个人电脑的普及,日常无论收发邮件、访问网页和文件传输都已经离不开TCP/IP协议,TCP/IP协议已经成为Internet的基础。

1. TCP/IP协议簇简介
  TCP/IP实际上就是在物理网上的一组完整的协议。其核心部分是传输层协议(TCP/UDP)、网络层(IP)和物理接口层,这三层通常在操作系统内核中实现。TCP/UDP层提供了传输层服务,而IP协议提供了网络层服务。
1.1  TCP/IP结构
TCP/IP协议是一个四层协议。
1. 链路层
也称数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,它们一起处理与传输媒介的物理接口细节。
该层所包含的协议有:
  • ARP地址解析协议(Address Resolution Protocol)  此协议负责将硬件地址映射到网络地址。
  • RARP反向地址转换协议(Reverse Address Resolution Protocol)  此协议负责将网络地址映射到硬件地址。
2. 网络层
也称互联网层,负责分组在网络中的活动。
该层包含的协议包括:
  • IP网间协议(Internet Protocol)  负责主机间用户数据的路由和网络上数据的存储。同时为ICMP、TCP、UDP提供分组发送服务。
  • ICMP 网间报文控制协议(Internet Control Message Protocol)  处理网关和主机间的差错和传送控制。
3. 传输层
该层主要为两台主机上的应用程序提供端到端的数据通信,它分为两个不同的协议:
  • TCP传输控制协议(Transfer Control Protocol)  提供端到端的质量保证的数据传输,该层负责数据的分组、质量控制和超时重发等,应用层就可以忽略保证数据传输可靠性的措施。如通过HTTP协议访问WEB站点就是采用TCP协议传输数据。
  • UDP用户数据报协议(User Diagram Protocol)  只提供简单的把数据从一端发送到另外一端,至于数据是否到达或按时到达、数据是否损坏和丢失则必须由应用层来解决,也就是说我们必须自己编写程序来控制。例如QQ用户间通信就采用UDP协议,所以必须指定一定的应答机制来保证数据被可靠接收。
4. 应用层
该层负责处理实际的应用程序细节。
包括一些大家常用的协议:
  • FTP文件传输协议(File Transfer Protocol)  允许用户以文件操作的方式与另外一个主机相互通信、传输文件。
  • SMTP简单邮件传输协议(Simple Mail Transfer Protocol)  用于发送电子邮件。
  • TELNET终端协议(Telnet Terminal Protocol)  允许用户以虚拟终端的方式访问远程主机。
  • HTTP超文本传输协议(Hypertext Transfer Protocol)  是万维网WWW的基础,使用户可以以简单的方式访问丰富多彩的Internet。
  • TFTP简单文件传输协议(Trivial File Transfer Protocol),FTP的一种简化版本。
TCP/IP协议的核心部分是传输层协议,而协议并不为用户接触到,大家平时感受到的只是应用程序所提供的网络功能。如用户通过打开浏览器可以访问WWW主页,打开QQ可以和网友聊天,他们所感受到的是应用程序带来的网络功能,并不能感受到TCP/IP协议的传输层和网络层协议功能。因为协议上的各层对上一层是透明的,即应用层只负责应用程序之间的通信逻辑,并不用关心网络传输细节;对于链路层则只用负责传输数据,而不用去关心传输的数据是声音数据还是图像数据。
应用程序通过调用操作系统所提供的网络应用程序接口(Socket)来实现网络功能。

1.2  IP地址
  如果一个通信系统允许任一主机与其他任何主机进行通信,则需要一个全球都能接受的方法来表示网络上所有计算机。对于地址,TCP/IP设计人员选择了一种类似于物理网络编址的方法,其中,互联网上的每个主机都被分配了一个32位的整数地址,叫做互联网地址(Internet Address)或称为IP地址。TCP/IP互联网上的每台主机都分配了一个惟一的32位互联网地址,该地址用于所有与该主机的通信。最新出台的IPv6中的IP地址已经升至128位,因此IP地址内容更加丰富。
  每个IP地址被分割为两部分:网络号和主机号。网络号用于确定计算机所属的物理网络,而主机号则用于标识网络上的惟一的计算机。互联网中每一个物理网络都具有一个惟一的值作为网络号(Network Number),由此可以保证每台计算机分配网络上惟一的地址。在不同网络内可以有相同主机号的机器。
IP地址共分5类:A类、B类、C类、D类和E类,其中A类、B类、C类为基本类,D类用于多播播送,E类属于保留类,暂未使用。A类网络的最高位值为0,网络号8位,主机号24位,只标识127个不同的物理网络,每个网络可容纳16 777 216台主机。B类网络的最高位值为10,网络号16位,主机号16位,可标识2 097 152个不同的物理网络,每个网络可容纳65 536台主机,用于为数不少的中型网络。C类网络的最高位值为110,网络号24位,主机号8位,只标识2 097 152个不同的物理网络,每个网络可容纳256台主机,用于为数众多的小型网络,目前日常使用的网络均为C类网络。
  网络格式如下:
  A类:0******* xxxxxxxx xxxxxxx xxxxxxxx
  B类:10****** ******** xxxxxxx xxxxxxxx
  C类:110***** ******** ******* xxxxxxxx
  D类:1110xxxx xxxxxxxx xxxxxxx xxxxxxxx
  E类:1111xxxx xxxxxxxx xxxxxxx xxxxxxxx
其中,*表示的是网络号,而x表示的是主机号。
  IP地址一般采用点分十进制的表示方式,例如61.176.134.25为163拨号沈阳用户IP地址。采用点分式表示后地址分类如表2-1所示。
  表2-1  各类IP地址点分式范围
  类型    范围
  A类    0.0.0.0~127.255.255.255
  B类    128.0.0.0~191.255.255.255
  C类    192.0.0.0~223.255.255.255
  D类    224.0.0.0~239.255.255.255
  E类    240.0.0.0~247.255.255.255
此外,还有以下特殊保留地址:
• 网络地址(Network Address)  IP地址中,主机号码各位都为0的地址表示网络地址代表该网络,如A类地址26.0.0.0即为该网络的网络地址。
• 广播地址(Broadcast Address)  IP地址中,主机号码各位都为1的地址表示广播地址代表该网络,如A类地址26.255.255.255即为该网络广播地址。
• 回送地址(Loopback Address)  IP地址为127.0.0.1即为回送地址,一般用于测试TCP/IP及本机进程间的通信。
由于A类和B类地址为主机号分配了太多的空间,因此主机都要求支持子网掩码(netmask RFC 950[Mogul and Postel 1985])。已经不把IP地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。子网掩码也是一个32位数,根据IP地址的分级,子网掩码中与网络号相对应的位保留为1,而主机号的位都为0。将子网掩码与IP地址进行AND运算的结果即为网络号码。因此A类网络的掩码一般都为255.0.0.0,B类掩码为255.255.0.0,C类掩码为255.255.255.0。

1.3 端口号
  TCP和UDP都是采用16位的端口号来识别应用程序。服务器一般都是通过知名端口来识别,协议里面低于1024的端口都有确切的定义,它们对应着因特网上常见的一些服务。这些常见的服务可以划分为使用TCP端口(面向连接,如打电话)和使用UDP端口(无连接,如写信)两种。
使用TCP端口的常见服务有:
• FTP  定义了文件传输协议,使用21号端口。常说某某主机开了FTP服务便是文件传输服务。下载文件和上传主页都要用到FTP服务。
• TELNET  你上过BBS吗?以前的BBS是纯字符界面的,支持BBS的服务器将23号端口打开,对外提供服务。其实TELNET的真正意思是远程登录,用户可以以自己的身份远程连接到主机上。
• SMTP  定义了简单邮件传送协议。现在很多邮件服务器用的是这个协议,用于发送邮件,服务器开放的是25号端口。
• HTTP  这可是大家用得最多的协议了——超文本传送协议。上网浏览网页就需要用到它,那么提供网页资源的主机就得打开其80端口以提供服务。
• POP3  和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。
使用UDP端口的常见服务有:
• DNS  域名解析服务。因特网上的每一台计算机都有一个网络地址与之对应,这个地址就是我们常说的IP地址,它以纯数字的形式表示。然而这却不便于记忆,于是出现了域名。访问主机的时候只需要知道域名,域名和IP地址之间的变换由DNS服务器来完成。DNS用的是53端口。
• SNMP  简单网络管理协议,使用161端口,用来管理网络设备。由于网络设备很多,无连接的服务就体现出其优势。
• 聊天软件QQ  QQ的程序既接受服务又提供服务,这样两个聊天的人才是平等的。QQ用的是无连接的协议,其服务器使用8000端口,侦听是否有信息到来;客户端使用4000端口,向外发送信息。

本文摘自《Visual C++网络游戏建模与实现》第二版,本文版权属于作者苏羽和http://www.wantsoft.com共同所有,引用本文请保留此版权信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值