第一章 概述

一 分层

TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。

1)链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。

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

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

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

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

两台计算机通过TCP/IP协议通讯的过程如下所示:

传输层及其以下的机制由内核提供,应用层由用户进程提供,应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示:

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据包(packet),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
上图对应两台计算机在同一网段中的情况,如果两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器,如下图所示:

其实在链路层之下还有物理层,指的是电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)是工作在物理层的网络设备,用于双绞线的连接和信号中继(将已衰减的信号再次放大使之传得更远)。

链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。

网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识,Internet上有大量路由器负责根据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个路由器。路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。IP协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。

网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端(end-to-end)的传输(这里的“端”指源主机和目的主机)。传输层可选择TCP或UDP协议。TCP是一种面向连接的、可靠的协议,有点像打电话,双方拿起电话互通身份之后就建立了连接,然后说话就行了,这边说的话那边保证听得到,并且是按说话的顺序听到的,说完话挂机断开连接。也就是说TCP传输的双方需要首先建立连接,之后由TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠的数据流,通讯之后关闭连接。UDP协议不面向连接,也不保证可靠性,有点像寄信,写好信放到邮筒里,既不能保证信件在邮递过程中不会丢失,也不能保证信件是按顺序寄到目的地的。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。

二 TCP/IP 分层

在TCP/IP协议族中,各层的协议。

三 互联网地址

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

各类IP地址的范围:

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

四 域名系统

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

五 客户—服务器模型

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

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

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

I2.处理客户请求

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

I4.返回I1步

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

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

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

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

C3.返回C1步。

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

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

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

六 端口号

TCP和UDP采用16 bit的端口号来识别应用程序。那么这些端口号是如何选择的呢?
服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说, FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP (简单文件传送协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1~1 0 2 3之间的端口号。这些知名端口号由Internet号分配机构( Internet Assigned Numbers Authority, IANA)来管理。

到1992年为止,知名端口号介于1~2 5 5之间。2 5 6~1 0 2 3之间的端口号通常都是由Unix系统占用,以提供一些特定的Unix服务—也就是说,提供一些只有Unix系统才有的、而其他操作系统可能不提供的服务。现在IANA管理1~1023之间所有的端口号。
Internet扩展服务与Unix特定服务之间的一个差别就是Telnet和Rlogin。它们二者都允许通过计算机网络登录到其他主机上。Telnet是采用端口号为23的TCP/IP标准且几乎可以在所有操作系统上进行实现。相反,Rlogin最开始时只是为Unix系统设计的(尽管许多非Unix系统现在也提供该服务),因此在80年代初,它的有名端口号为513。

客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。
大多数TCP/IP实现给临时端口分配1024~5000之间的端口号。大于5000的端口号是为其他服务器预留的。

保留端口号

Unix系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号。

这些端口号介于1~1023之间,一些应用程序将它作为客户与服务器之间身份认证的一部分。

时间: 2024-10-29 19:09:05

第一章 概述的相关文章

软件工程概论第一章--概述

本章主要从软件,软件工程,软件工程知识体系和软件工程职业道德规范等方面展开,其中定义了软件:软件是计算机程序,规程以及运行计算机系统可能需要的相关文档和数据.还详细介绍了软件的特性:复杂,不可见,不断变化,大多数软件是定制的,不是通过已有构件组装而成.软件发展的四个阶段和软件危机也做了详细的介绍. 软件工程方面,定义了软件工程:软件工程是将系统的.规范化的.可定量的方法应用于软件开发.运行和维护,即将工程化应用到软件上:对上述的方法的探究.介绍了软件工程的三要素:过程.方法和工具.软件质量的特性

软件工程概论第一章概括

第一章题目的名字为概述,听名字就应该知道第一章应该是对事物的一个总结,通读之后,才知道这个事物就是软件工程这个名词. 本章首先介绍了软件这个名词,对软件的种类做了详细的介绍,而后对软件的发展简单的说了一下,并说明了现在软件存在的行业. 其次对软件工程这个词做了详细的介绍,从软件设计的发展以及构造方法的理论方面做了介绍,也对软件工程方面的危机简单的介绍了一下. 最后对于整个软件设计的过程在理论方面详细解释了一下,其中涉及到对于软件质量的重视态度,其中的SWEBOK项目是软件工程的一个重要概括,经过

软件工程概论第一章

本章主要介绍了软件的概念(软件是计算机程序,规程以及运行计算机可能需要的相关文档和数据.程序是计算机设备可以接受的一切指令和说明,为计算机提供所需的功能和性能,数据是事买,概念或指令的结构化表示,能够被设备接受,理解或处理),本章主要介绍了软件的概念(软件是计算机程序.规程以及运行计算机系统可能需要的相关文档和数据.程序是计算机设备可以接受的一切指令和说明,为计算机提供所需的功能和性能. 数据是事实.概念或指令的结构化表示,能够被设备接受.理解或处理.).软件的类型.软件的特性.软件的发展史以及

软件工程概论第一章阅读笔记

在这章中,我对软件工程有了一定的理解. 软件工程是为了解决软件危机而产生的一类学科. 对于软件危机,有如下解释:1 由于软件开发经验.数据难积累,是的开发工作计划难制定 2 程序员与用户难以交流 3 软件开发过程不规范 4 随和软件规模增大,其复杂性指数型增加 5 缺少有效的软件测评手段. 或许有些人会认为,质量和生产率之间是对立的,但事实上这是错误的观点.在正确的软件工程方法的指导下,质量与生产率可以同时提高.由此可见软件工程的重要性.

软件工程概论第一章总结

软件是计算机程序,规程以及运行计算机系统可能需要的相关文档和数据.它主要分为两种 一种为通用软件,另一种为定制软件,软件聚有复杂,不可见,不断变化的特性,目前的软件大多数软件都是定制的而不是通过己有的构件组装而成.由于软件的发展出现了软件危机.   提到了软件那就要提一下软件工程,软件工程是将系统性的规范化的可定量的方法应用软件的开发,运行,维护及工程化应用到软件上.软件工程是以关注软件质量为目标,由过程,方法和工具三个要素组成.传统的以功能分析和数据分析为基础的结构化方法带来很多弊端.书中提到

软件工程读书笔记(1)——第一章 概述

第一章 概述 一.软件工程概念的提出 1968年NATO(North Atlantic Treaty Organization,北大西洋公约组织)会议首次提出“软件工程”概念. 软件工程是为了解决开发成本效益和软件质量的问题而产生. 二.软件 1.什么是软件? <IEEE Standard Glossary of Software Engineering Terminology>给出了有关软件的如下定义: 软件是计算机程序.规程以及运行计算机系统可能需要的相关文档和数据.(软件≠程序) 根据软

【网络原理】期末复习笔记 第一章 概述

第一章 概述 1.1 网络在现代的作用 21世纪三化:数字化(声音信号数字化处理,为了电脑处理和传输).网络化.信息化 三网:电信网络(电话).有线电视网络(同轴电缆.从有线电视公司到用户).计算机网络(因特                 网.其他网络) 1.2 计算机网络的重要功能       连通性:彼此联通.交换信息     ·远程桌面客户端:mstsc(Microsoft terminal services client) Win10.win7是单用户操作系统,只允许一个用户同时操作.

《ASP.NET Web API 2框架揭秘》第一章 概述【样章】

<ASP.NET Web API 2框架揭秘>(详情请见<新作<ASP.NET Web API 2框架揭秘>正式出版>)以实例演示的方式介绍了很多与ASP.NET Web API相关的最佳实践,同时还提供了一系列实用性的扩展.本书详细讲解了ASP.NET Web API从接收请求到响应回复的整个流程,包括路由.Http Controller的激活.Action方法的选择与执行.参数的绑定与验证.过滤器的执行和安全等相关的机制.除此之外,本书在很多章节还从设计的角度对AS

perl5 第一章 概述

第一章 概述 by flamephoenix 一.Perl是什么?二.Perl在哪里?三.运行四.注释 一.Perl是什么?      Perl是Practical Extraction and Report Language的缩写,它是由Larry Wall设计的,并由他不断更新和维护,用于在UNIX环境下编程.      .Perl具有高级语言(如C)的强大能力和灵活性.事实上,你将看到,它的许多特性是从C语言中借用来的.      .与脚本语言一样,Perl不需要编译器和链接器来运行代码,

读《构建之法:现代软件工程》第一章有感

在阅读了<构建之法:现代软件工程>第一章绪论后,我软件工程有了一定的了解,同时以一名机械学生为立场也有所感悟. 以前我只是简单的认为软件就是一个应用,你只需要去点击.exe文件就可以使用这个软件.而在阅读了邹欣老师的<构建之法:现代软件工程>后,我懂得软件=程序+软件工程,我们现在不应再停留于软件的用户体验.交互界面,更应该看到软件背后支撑它的程序代码等.软件工程是一个学科交叉的过程,它与许多学科都相关:计算机科学.计算机工程.管理学.数学.项目管理学.质量管理.软件人体工学.系统