网络编程知识整理

news2024/10/7 4:34:45

目录

1.1 引言

1.2 分层

1.3 TCP/IP的分层

1.4 互联网的地址

1.5 域名服务

1.6 封装

1.7 分用

1.8 端口号


1.1 引言

        很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 T C P / I P协议族允许它们互相进行通信。这一点很让人感到吃惊,因为它的作用已远远超出了起初的设想。T C P /I P起源于 6 0年代末美国政府资助的一个分组交换网络研究项目,到 9 0年代已发展成为计算机间最常应用的组网形式。它是一个真正的开放系统,因为协议族的定义及其多种实现可以不用花钱花很少的钱就可以公开地得到。它成为被称作“全球互联网”或“因特网(Internet)”的基础,该广域网( WAN)已包含超过100万台遍布世界各地的计算机。

1.2 分层

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


每一层负责不同的功能:
1) 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机
中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节
2) 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在T C P / I P协议族中,网络层协议包括 I P协议(网际协议),I C M P协议(I n t e r n e t互联网控制报文议),以及IGMP协议(Internet组管理协议)。
3) 运输层,主要为两台主机上的应用程序提供端到端的通信。在 T C P / I P协议族中,有两个互不相同的传输协议: TCP(传输控制协议)和 UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面, U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。
这两种运输层协议分别在不同的应用程序中有不同的用途。
4) 应用层,负责处理特定的应用程序细节。几乎各种不同的 T C P / I P实现都会提供下面这些
通用的应用程序:


        假设在一个局域网( L A N)如以太网中有两台主机,二者都运行 F T P协议,图 1 - 2列出了
该过程所涉及到的所有协议。

        

        这里,我们列举了一个 F T P客户程序和另一个 F T P服务器程序。大多数的网络应用程序都被设计成客户—服务器模式。服务器为客户提供某种服务,在本例中就是访问服务器所在主机上的文件。在远程登录应用程序 Telnet中,为客户提供的服务是登录到服务器主机上。在同一层上,双方都有对应的一个或多个协议进行通信。例如,某个协议允许 T C P层进行通信,而另一个协议则允许两个 IP层进行通信。
        在图1 - 2的右边,我们注意到应用程序通常是一个用户进程,而下三层则一般在(操作系
统)内核中执行。尽管这不是必需的,但通常都是这样处理的,例如 UNIX操作系统。
        在图1 - 2中,顶层与下三层之间还有另一个关键的不同之处。应用层关心的是应用程序的细节,而不是数据在网络中的传输活动。下三层对应用程序一无所知,但它们要处理所有的通信细节。
        在图1 - 2中列举了四种不同层次上的协议。 F T P是一种应用层协议, T C P是一种运输层协议,I P是一种网络层协议,而以太网协议则应用于链路层上。 T C P / I P协议族是一组不同的协
议组合在一起构成的协议族。尽管通常称该协议族为 T C P / I P,但T C P和I P只是其中的两种协
议而已(该协议族的另一个名字是 Internet协议族(Internet Protocol Suite))。
        网络接口层和应用层的目的是很显然的—前者处理有关通信媒介的细节(以太网、令牌环网等),而后者处理某个特定的用户应用程序( F T P、Te l n e t等)。但是,从表面上看,网络层和运输层之间的区别不那么明显。为什么要把它们划分成两个不同的层次呢?为了理解这一点,我们必须把视野从单个网络扩展到一组网络。

        在80年代,网络不断增长的愿意之一是大家都意识到只有一台孤立的计算机构成的“孤岛”  没有太大意义,于是就把这些孤立的系统组在一起形成网络。随着这样发展,到了90年代,我们又逐渐认识到这种由单个网络构成的新的更大的“岛屿”同样没有太大的意义。于是,人们又把多个网络连在一起形成一个网络的网络,或称作互联网(internet)。一个互联网就是一组通过相同协议族互联在一起的网络。

        构造互连网最简单的方法是把两个或多个网络通过路由器进行连接。它是一种特殊的用于网络互连的硬件盒。路由器的好处是为不同类型的物理网络提供连接:以太网、令牌环网、点对点的链接和 FDDI(光纤分布式数据接口)等等。
        这些盒子也称作IP路由器(IP Router),但我们这里使用路由器 (Router)这个术语。从历史上说,这些盒子称作网关( g a t e w a y),在很多 T C P / I P文献中都使用这个术语。现在网关这个术语只用来表示应用层网关:一个连接两种不同协议族的进程(例如,TCP/IP和IBM的SNA),它为某个特定的应用程序服务(常常是电子邮件或文件传输)。
        图1 - 3是一个包含两个网络的互连网:一个以太网和一个令牌环网,通过一个路由器互相连接。尽管这里是两台主机通过路由器进行通信,实际上以太网中的任何主机都可以与令牌环网中的任何主机进行通信。
        在图 1 - 3中,我们可以划分出端系统( End system )(两边的两台主机)和中间系统(Intermediate system)(中间的路由器)。应用层和运输层使用端到端( End-to-end)协议。在图中,只有端系统需要这两层协议。但是,网络层提供的却是逐跳( Ho p - b y - h o p)协议,两个端系统和每个中间系统都要使用它。

        在T C P / I P协议族中,网络层 I P提供的是一种不可靠的服务。也就是说,它只是尽可能快
地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面, T C P在不可靠的I P层上提供了一个可靠的运输层。为了提供这种可靠的服务, T C P采用了超时重传、发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。
        从定义上看,一个路由器具有两个或多个网络接口层(因为它连接了两个或多个网络)。任何具有多个接口的系统,英文都称作是多接口的 (multihomed)。一个主机也可以有多个接口,但一般不称作路由器 , 除非它的功能只是单纯地把分组从一个接口传送到另一个接口。同样,路由器并不一定指那种在互联网中用来转发分组的特殊硬件盒。大多数的 T C P / I P实现也允许一个多接口主机来担当路由器的功能,但是主机为此必须进行特殊的配置。在这种情况下,我们既可以称该系统为主机(当它运行某一应用程序时,如 F T P或Te l n e t),也可以称之为路由器(当它把分组从一个网络转发到另一个网络时)。在不同的场合下使用不同的术语。
        互联网的目的之一是在应用程序中隐藏所有的物理细节。虽然这一点在图 1 - 3由两个网络
组成的互联网中并不很明显,但是应用层不能关心(也不关心)一台主机是在以太网上,而另一台主机是在令牌环网上,它们通过路由器进行互连。随着增加不同类型的物理网络,可能会有 2 0个路由器,但应用层仍然是一样的。物理细节的隐藏使得互联网功能非常强大,也非常有用。
        连接网络的另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网( L A N)组合在一起,这样对上层来说就
好像是一个局域网。
        TCP /IP 倾向于使用路由器而不是网桥来连接网络,因此我们将着重介绍路由器。


1.3 TCP/IP的分层

        在TCP/IP协议族中,有很多种协议。图 1-4给出了本书将要讨论的其他协议。

        TCP和UDP是两种最为著名的运输层协议,二者都使用IP作为网络层协议。虽然TCP使用不可靠的IP服务,但它却提供一种可靠的运输层服务。UDP为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。但是与TCP不同的是,UDP是不可靠的,它不能保证数据报能安全无误地到达最终目的。
        IP是网络层上的主要协议,同时被 TCP和UDP使用。TCP和UDP的每组数据都通过端系统
和每个中间路由器中的IP层在互联网中进行传输。在图1-4中,我们给出了一个直接访问 IP的应
用程序。这是很少见的,但也是可能的(一些较老的选路协议就是以这种方式来实现的。当然
新的运输层协议也有可能使用这种方式)。
        ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
尽管ICMP主要被IP使用,但应用程序也有可能访问它。我们将分析两个流行的诊断工具,Ping和Traceroute,它们都使用了ICMP。
        IGMP是Internet组管理协议。它用来把一个 UDP数据报多播到多个主机。
        A R P(地址解析协议)和 R A R P(逆地址解析协议)是某些网络接口(如以太网和令牌环
网)使用的特殊协议,用来转换 I P层和网络接口层使用的地址。

1.4 互联网的地址

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

1.5 域名服务

        尽管通过 I P地址可以识别主机上的网络接口,进而访问主机,但是人们最喜欢使用的还
是主机名。在 T C P / I P领域中,域名系统( D N S)是一个分布的数据库,由它来提供 I P地址和主机名之间的映射信息。
        现在,我们必须理解,任何应用程序都可以调用一个标准的库函数来查看给定名字的主机
的IP地址。类似地,系统还提供一个逆函数—给定主机的IP地址,查看它所对应的主机名。
        大多数使用主机名作为参数的应用程序也可以把 I P地址作为参数。例如,当我
们用Telnet进行远程登录时,既可以指定一个主机名,也可以指定一个 IP地址。

1.6 封装

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

        图1-7中帧头和帧尾下面所标注的数字是典型以太网帧首部的字节长度。
以太网数据帧的物理特性是其长度必须在 4 6~1 5 0 0字节之间。
        所有的Internet标准和大多数有关 TCP/IP的书都使用octet这个术语来表示字节。使
用这个过分雕琢的术语是有历史原因的,因为 TCP/IP的很多工作都是在DEC-10系统上
进行的,但是它并不使用8 bit的字节。由于现在几乎所有的计算机系统都采用8 bit的字
节,因此我们在本书中使用字节(byte)这个术语。
        更准确地说,图 1-7中IP和网络接口层之间传送的数据单元应该是分组( packet)。
分组既可以是一个IP数据报,也可以是IP数据报的一个片(fragment)。

        U D P数据与 T C P 数据基本一致。唯一的不同是 U D P传给 I P 的信息单元称作 U D P数据报(UDP datagram),而且UDP的首部长为 8字节。
        由于T C P、U D P、I C M P和I G M P都要向I P传送数据,因此 I P必须在生成的 I P首部中加入某种标识,以表明数据属于哪一层。为此, I P在首部中存入一个长度为8 b i t的数值,称作协议域。 1表示为 I C M P协议, 2表示为 I G M P协议, 6表示为 T C P协议, 1 7表
示为UDP协议。
        类似地,许多应用程序都可以使用 T C P或U D P来传送数据。运输层协议在生成报文首部
时要存入一个应用程序的标识符。 T C P和U D P都用一个 1 6 b i t的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。
        网络接口分别要发送和接收 I P、A R P和R A R P数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络曾协议。为此,以太网的帧首部也有一个16bit的帧类型域。

1.7 分用

        当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各
层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的
上层协议。这个过程称作分用( Demultiplexing),图1-8显示了该过程是如何发生的。

        为协议ICMP和IGMP定位一直是一件很棘手的事情。在图 1-4中,把它们与IP放在
同一层上,那是因为事实上它们是IP的附属协议。但是在这里,我们又把它们放在IP层
的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。
        对于ARP和RARP,我们也遇到类似的难题。在这里把它们放在以太网设备驱动程
序的上方,这是因为它们和 IP数据报一样,都有各自的以太网数据帧类型。但在图 2-4
中,我们又把ARP作为以太网设备驱动程序的一部分,放在 IP层的下面,其原因在逻
辑上是合理的。
        这些分层协议盒并不都是完美的。
        当进一步描述TCP的细节时,我们将看到协议确实是通过目的端口号、源 IP地址和源端口
号进行解包的。

1.8 端口号

        前面已经指出过, T C P和U D P采用16 bit的端口号来识别应用程序。那么这些端口号是如
何选择的呢?

        服务器一般都是通过知名端口号来识别的。例如,对于每个 T C P / I P实现来说, F T P服务
器的T C P端口号都是 2 1,每个Te l n e t服务器的 T C P端口号都是 2 3,每个T F T P (简单文件传送协议)服务器的 U D P端口号都是 6 9。任何 T C P / I P实现所提供的服务都用知名的 1~1 0 2 3之间的端口号。这些知名端口号由 I n t e r n e t号分配机构( Internet Assigned Numbers Authority, IANA)来管理。
        到1992年为止,知名端口号介于1~255之间。256~1023之间的端口号通常都是由
Unix系统占用,以提供一些特定的 Unix服务—也就是说,提供一些只有 Unix系统才
有的、而其他操作系统可能不提供的服务。现在IANA管理1~1023之间所有的端口号。
        Internet扩展服务与Unix特定服务之间的一个差别就是Telnet和Rlogin。它们二者都
允许通过计算机网络登录到其他主机上。 Telnet是采用端口号为23的TCP/IP标准且几乎
可以在所有操作系统上进行实现。相反,Rlogin最开始时只是为Unix系统设计的(尽管
许多非Unix系统现在也提供该服务),因此在80年代初,它的有名端口号为513。
        客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以
了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该
客户程序时才存在,而服务器则只要主机开着的,其服务就运行。
        大多数T C P / I P实现给临时端口分配 1 0 2 4~5 0 0 0之间的端口号。大于 5 0 0 0的端口号是为其他服务器预留的( Internet上并不常用的服务 )。我们可以在后面看见许多这样的给临时端口分配端口号的例子。
        Solaris 2.2是一个很有名的例外。通常TCP和UDP的缺省临时端口号从 32768开始。
在E.4节中,我们将详细描述系统管理员如何对配置选项进行修改以改变这些缺省项。
        大多数U n i x系统的文件 /e t c / s e r v i c e s都包含了人们熟知的端口号。为了找到 Te l n e t服务器和域名系统的端口号,可以运行以下语句:


保留端口号。
        U n i x系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个
保留端口号。
        这些端口号介于 1~1 0 2 3之间,一些应用程序(如有名的 R l o g i n,2 6 . 2节)将它作为客户与服务器之间身份认证的一部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1460224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小红书家居种草商品笔记,需要注意哪些?

家居赛道一直都是小红书的强势赛道之一。那么如果想要成为一个家居博主,或者家居品牌想要入驻小红书,提升影响力,该如何进行推广呢?今天我们就从家居商品笔记的角度,和大家探讨下小红书家居种草商品笔记,需要注意哪些…

PHP分析二维数据表(长度|数字字段|空值|纯姓名|英文用户名|科学计数|是否等长|是否唯一)

先看图&#xff0c;后有完整代码 <?php $t "Excel数据转Sql查询系统字段半智能分析"; $s "Excel复制过来的二维结构表内容,分析查询条件&#xff01;"; $x "字段|最大长度|长度有|数字字段|空值存在|纯姓名|英文用户名|科学计数|是否等长|是否…

pandas DataFrame 导出到Excel格式美化

默认情况下&#xff0c;DataFrame 的 to_excel() 方法导出到 Excel 格式是比较丑的&#xff0c;本篇的代码演示了用一种比较简单的方法进行美化。要点&#xff1a; 使用 Excel 的 Table &#xff08;经常被称为超级表&#xff09;自动列宽 美化前&#xff0c;输出的格式如下&…

高级统计方法 第2次作业

概念 1. &#xff08;a&#xff09; 光滑度高的好&#xff0c;样本足够多光滑度越高就越能表征真实情况&#xff0c;也能对预测变量更好的预测。 &#xff08;b&#xff09; 光滑度低的好&#xff0c;因为可能“过拟合”&#xff0c;一些误差大的数可能会较大的影响到预测…

微信小程序video 点击自动全屏播放

//因为这个地址可能是图片也可能是视频 点击 图片可以预览&#xff0c;点击视频可放大全屏自动播放。 代码如下 <view v-else :class{contentImg: x.picture.length0} style"margin-top: 10px;"v-for"(x1, y1) in x.picture" :key"y"><…

【Docker】Linux主机部署Docker

Docker部署 1.二进制文件部署 到如下地址&#xff0c;下载二进制包。 Docker官网&#xff1a;https://docs.docker.com/engine/install/binaries/ 网易镜像源&#xff1a;https://mirrors.163.com/docker-ce/linux/static/stable/x86_64/ 下载好的二进制包上传到主机&#xf…

【LeetCode】递归精选8题——基础递归、链表递归

目录 基础递归问题&#xff1a; 1. 斐波那契数&#xff08;简单&#xff09; 1.1 递归求解 1.2 迭代求解 2. 爬楼梯&#xff08;简单&#xff09; 2.1 递归求解 2.2 迭代求解 3. 汉诺塔问题&#xff08;简单&#xff09; 3.1 递归求解 4. Pow(x, n)&#xff08;中等&…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第11章 项目成本管理(一)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

消息队列-RabbitMQ:workQueues—工作队列、消息应答机制、RabbitMQ 持久化、不公平分发(能者多劳)

4、Work Queues Work Queues— 工作队列 (又称任务队列) 的主要思想是避免立即执行资源密集型任务&#xff0c;而不得不等待它完成。我们把任务封装为消息并将其发送到队列&#xff0c;在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时&#xff0c;这些工作…

python51-Python流程控制if分支之不要随意缩进

需要说明的是,虽然Python 语法允许代码块随意缩进N个空格,但同一个代码块内的代码必须保持相同的缩进,不能一会缩进2个空格,一会缩进4个空格。例如如下代码。 上面程序中第二条print语句缩进了5个空格,在这样的情况下,Python解释器认为这条语句与前一条语句(缩进了4个空格…

用html编写的招聘简历

用html编写的招聘简历 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</tit…

没有代码签名证书会怎么样?

随着Windows的SmartScreen功能的普及&#xff0c;如果一个软件发布的时候没有通过代码签名证书进行数字签名&#xff0c;那这个软件从发布&#xff0c;下载&#xff0c;安装&#xff0c;运行等&#xff0c;基本都会遭到系统的风险警告&#xff0c;运行拦截。其目的在于警示用户…

MapGIS 10.6 Pro前端开发低代码,快速构建WebGIS应用

随着实景三维、CIM、数字孪生等的快速发展&#xff0c;相关应用开发需求的市场增长对企业IT交付能力的要求越来越高&#xff0c;为了确保质量并实现提效降本&#xff0c;并让专业开发者更加专注于更具有价值和创新型的工作&#xff0c;低代码开发技术成为大家的优先选择。 为了…

工作入职必备:一寸照片尺寸要求及自拍换底色方法

踏入职场的第一步&#xff0c;往往从一张小小的一寸照片开始。这张看似不起眼的照片&#xff0c;却是你给新同事、新领导的第一印象。今天&#xff0c;我们就来深入探讨一寸照片的尺寸要求&#xff0c;以及如何巧妙地通过自拍来更换背景颜色&#xff0c;让你的入职照片既专业又…

【Java EE初阶二十一】关于http(二)

2. 深入学习http 2.5 关于referer Referer 描述了当前页面是从哪个页面跳转来的&#xff0c;如果是直接在地址栏输入 url(或者点击收藏夹中的按钮) 都是没有 Referer。如下图所示&#xff1a; HTTP 最大的问题在于"明文传输”,明文传输就容易被第三方获取并篡改. …

我国为分散染料(分散性染料)生产及出口大国 合成纤维领域为其主要需求端

我国为分散染料&#xff08;分散性染料&#xff09;生产及出口大国 合成纤维领域为其主要需求端 分散染料又称分散性染料&#xff0c;指分子结构中不含水溶性基团的染料。与其他染料相比&#xff0c;分散染料具有耐光性好、色彩饱和度高、易于分散、绿色环保等优势&#xff0c;…

探索未来-Sora

AI如何将静态图像转化为动态、逼真的视频&#xff1f; OpenAI 的 Sora 通过时空片段&#xff08;以下统称片段&#xff09;的创新使用给出了答案。 Sora 展示与探讨 在快速发展的生成模型领域&#xff0c;OpenAI 的 Sora成为一个重要的里程碑&#xff0c;有望重塑我们对视频生…

Python编程实验四:函数的使用

目录 一、实验目的与要求 二、实验内容 三、主要程序清单和程序运行结果 第1题 第2题 第3题 第4题 第5题 四、实验结果分析与体会 一、实验目的与要求 &#xff08;1&#xff09;通过本次实验&#xff0c;学生应掌握函数的定义与调用的基本语法&#xff0c;能根据需要…

K8S的架构(1)

目录 一.k8s K8S有 master 和 worker node 两类节点&#xff1a; ​编辑 二.K8S创建Pod资源的工作流程 三.K8S资源对象 Pod&#xff1a;是K8S能够创建和管理的最小单位。 Pod控制器: 四.K8S资源配置信息 一.k8s kubernetes &#xff1a; Google旗下的容器跨主机编排…

linux上安装bluesky的步骤

1、设备上安装的操作系统如下&#xff1a; orangepiorangepi5b:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.2 LTS Release: 22.04 Codename: jammy 2、在用户家目录下创建一个目录miniconda3目录&a…