TCP/IP协议概述

引言

TCP/IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代已发展为计算机之间最常使用的组网形式.

分层

网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能,一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如图1-1所示。

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

  • 网络层,别名互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(internet互联网控制报文协议),以及IGMP协议 (Internet组管理协议)

  • 运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报文协议)。TCP为两台主机提供可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等,由于运输层提供可靠的端到端的通信,因此应用层可以忽略所有细节。而UDP相比之下只为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证给数据报能到达另一端。任何必须的可靠性必须由应用层提供。

  • 应用层负责处理特定的应用程序细节,几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:

  • Telnet远程登录

  • FTP文件传输协议
  • SMTP简单邮件传送协议
  • SNMP 简单网络管理协议

假设在一个局域网(LAN)如以太网中有两台主机,二者都运行FTP协议,如图列出该过程涉及到的所有协议。

这里写图片描述

上图中列举4种不同层次上的协议。FTP是一种应用层协议,TCP是一种运输层协议,IP是一种网络层协议,而以太网协议则应用于链路层上。TCP/IP协议族是一组不同的协议组合在一起构成的协议族。尽管通常该协议族为TCP/IP,但TCP/IP只是其中的两种协议而已。网络接口层和应用层的目的是很显然的,前者处理有关通信媒介的细节(以太网,令牌环网),后者处理某个应用程序(FTP,Telnet等)

这里写图片描述

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

这里写图片描述

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

互联网地址

互联网上的每一个接口必须有一个唯一的Internet地址(也称作IP地址)。IP地址32bit。Internet地址并不采用平面形式的地址空间,如1,2,3等。IP地址具有一定的结构,五类不同的互联网地址格式如图1-5所示
这里写图片描述

这些32位的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种方法称作“点分十进制表示法”区分各类地址的最简单的方法是看它的第一个十进制整数。图1-6列出了各类地址的起止范围,其中第一个十进制整数应黑字体表示。
这里写图片描述

有三类IP地址:单播地址(目的为单个主机),广播地址(目的为给定网络上的所有主机)以及多播地址(目的端为同一组类的所有主机)

域名系统

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

封装

当应用程序用TCP传送数据时,数据被送入协议栈中,然后一个个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息,有时还要增加尾部信息,该过程如图1-7所示。TCP传给IP的数据单元称作TCP报文段或简称TCP段。IP传给网络接口层的数据单元称作IP数据报。通过以太网传输的比特流称作帧。

这里写图片描述

UDP和TCP数据基本一致。唯一的不同是UDP传给IP的信息单元称作UDP数据报,而且UDP的首部长为8字节。由于TCP,UDP,ICMP,IGMP都要像IP传递数据,因此IP必须在生成的IP首部中加入某种标识,以表明数据属于哪一层。为此。IP在首部传入一个长度为8bit的数值,称作协议域。1表示ICMP协议,2表示IGMP协议,6表示TCP协议,17表示UDP协议。

分用

当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底部向上升,同时去掉各层协议加上的报文首部。每层协议都要去检查报文首部中的协议标识,以确保接收数据的上层协议。这个过程称作分用。如图1-8所示
这里写图片描述

客户—服务器模型

也就是我们常说的C-S架构,大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。可以将服务分成重复型或并发型。一个简单的重复性服务器通过以下步骤进行交互:第一步等待一个客户请求的到来,第二步处理客户请求,第三步发送响应给发送请求的客户,第四步返回第一步,重复型服务器主要的问题发生在第二步。在这个时候,它不能为其它客户机提供服务,相应的并发服务器采用以下步骤,第一步是一样的,第二步启动一个新的服务器去处理这个客户的请求。在这期间可能生成一个新的进程,任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理,处理结束后终止这个新服务器。然后返回第一步,并发的优点在于它是利用生成其他服务器的方法来处理客户的请求,也就是说每个客户有它自己对应的服务器,如果操作系统允许多任务,那么就可以同时为多个客户服务。一般来说TCP服务器是并发的,UDP服务器是重复的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值