TCP/IP详解笔记 第一章 概述

网络协议的分层

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

 

TCP/IP详解笔记 第一章 概述

每一层负责不同的功能:

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

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

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

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

Telnet远程登录   • FTP文件传输协议   • SMTP简单邮件传送协议   • SNMP简单网络管理协议

 

我们列举了一个FTP客户程序和另一个FTP服务器程序。大多数的网络应用程序都被设计成客户—服务器模式。服务器为客户提供某种服务,在本例中就是访问服务器所在主机上的文件

TCP/IP详解笔记 第一章 概述

在同一层上,双方都有对应的一个或多个协议进行通信

我们注意到应用程序通常是一个用户进程,而下三层则一般在(操作系统)内核中执行。尽管这不是必需的,但通常都是这样处理的,例如UNIX操作系统

应用层关心的是应用程序的细节,而不是数据在网络中的传输活动。下三层对应用程序一无所知,但它们要处理所有的通信细节

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

构造互连网最简单的方法是把两个或多个网络通过路由器进行连接,路由器的好处是为不同类型的物理网络提供连接。另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网(LAN)组合在一起,这样对上层来说就好像是一个局域网。TCP/IP倾向于使用路由器而不是网桥来连接网络


TCP/IP的分层

TCP/IP详解笔记 第一章 概述

TCP和UDP是两种最为著名的运输层协议,二者都使用IP作为网络层协议。虽然TCP使用不可靠的IP服务,但它却提供一种可靠的运输层服务;UDP为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息),但是与TCP不同的是,UDP是不可靠的,它不能保证数据报能安全无误地到达最终目的

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

ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。尽管ICMP主要被IP使用,但应用程序也有可能访问它

IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机

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


互联网的地址

互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。IP地址长32 bit。Internet地址并不采用平面形式的地址空间。IP地址具有一定的结构,五类不同的互联网地址格式如图

TCP/IP详解笔记 第一章 概述

这些 32 位的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称作 点分十进制表示法

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

下面列出了各类地址的起止范围:

TCP/IP详解笔记 第一章 概述

 


域名系统

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

任何应用程序都可以调用一个标准的库函数来查看给定名字的主机的IP地址。类似地,系统还提供一个逆函数—给定主机的IP地址,查看它所对应的主机名

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


封装

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

TCP/IP详解笔记 第一章 概述

 


分用

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

TCP/IP详解笔记 第一章 概述


客户-服务器模型

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

可以将这种服务分为两种类型:重复型或并发型。重复型服务器通过以下步骤进行交互:

1.等待一个客户请求的到来

2.处理客户请求

3.发送响应给发送请求的客户

4.返回1步

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

 

相应地,并发型服务器采用以下步骤:

1.等待一个客户请求的到来

2.启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器

3.返回1步

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

 

对服务器,而不是对客户进行分类的原因是因为对于一个客户来说,它通常并不能够辨别自己是与一个重复型服务器或并发型服务器进行对话。

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


端口号

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