前端要知道的网络知识三:认识OSI七层模型

2023-02-09 前端在路上

这几篇文章说:越深入,越觉得自己知道的少,还有很多知识需要去挖掘,也越来越感兴趣。大概,是魔怔了吧

前端要知道的网络知识一:TCP/IP 协议到底在讲什么

前端要知道的网络知识二:TCP协议的三次握手和四次分手

OSI**O容易混淆。**O是国际标准化组织(International Standard Organization)。而OSI是**O提出的关于计算机网络的一个**式**互连参考模型(Open System Interconnection/Reference Model)

要想让两台计算机进行通信,必须使它们采用相同的信息交换规则。我们把在计算机网络中用于规定信息的格式,以及如何发送和接收信息的一套规则称为网络协议(Network Protocol)或通信协议(Communication Protocol)

为了减少网络协议设计的复杂性,网络设计者并不是设计一个单一、巨大的协议来为所有形式的通信规定完整的细节,而是采用把通信问题划分为许多个小问题,然后为每个小问题设计一个单独的协议的方法,绝大多数网络采用分层设计方法。所谓分层设计方法,就是按照信息的流动过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递

OSI模型是一个**体系结构,它规定将网络分为7层,并规定每层的功能

物理层

物理层的主要功能是完成相邻结点之间原始比特流的传输,控制数据怎样被放置到通信介质上。物理层协议关心的典型问题是使用什么样的物理信号来表示数据“1”和“0”;一位持续的时间多长;数据传输是否可同时在两个方向上进行;最初的连接如何建立和完成,通信后连接如何终止;物理接口(插头和插座)有多少针以及各针的用处等。物理层的设计主要涉及物理层接口的机械、电气、功能和过程特性,以及物理层接连接的传输介质等问题,物理层的设计还涉及通信工程领域内的一些问题

1、中继器(Repeater)

中继器是连接网络线路的一种装置,常用于两个网络结点之间物理信号的双向转发工作。中继器是最简单的网络互联设备,主要完成物理层的功能,负责在两个结点的物理层上按位传递信息,完成信号的**、调整和放大功能,以此来延长网络的长度。由于存在损耗,在线路上传输的信号功率会逐渐衰减,衰减到一定程度时将造成信号失真,因此会导致接收错误。中继器就是为解决这一问题而设计的,它完成物理线路的连接,对衰减的信号进行放大,保持与原数据相同

双绞线理论上的最大传输距离是100m,如果超过100m,由于信号的衰减,很难保证信息传输的正确性,可以使用中继器来延长传输的距离。中继器仅适用于以太网,可将两段或两段以上(使用多个中继器)的以太网互连起来

2、集线器(Hub)

集线器相当于多端口的中继器,也可以把信号整形、放大后发送到所有结点上。在环型网络中只存在一个物理信号传输通道,都是通过一条传输介质来传输的,这样就存在各结点争抢信道的矛盾,传输效率较低。引入集线器这一网络设备后,每一个工作站是用它自己专用的传输介质连接到集线器的,各结点间不再只有一个传输通道,各结点发回来的信号通过集线器集中,集线器再把信号整形、放大后发送到所有结点。这样至少在上行通道上不再出现碰撞现象。但基于集线器的网络仍然是一个共享介质的局域网,这里的“共享”其实就是集线器内部总线,所以当上行通道与下行通道同时发送数据时仍然会存在信号碰撞现象。当集线器在其内部端口检测到碰撞时,产生碰撞强化信号向集线器所连接的所有端口进行传送,这时所有数据都将不能发送成功

正因为集线器的这一不足之处,所以它不能单独应用于较大网络中(通常是与交换机等设备一起分担小部分的网络通信负荷),就像在大城市中心不能有单车道一样,因为网络越大,出现网络碰撞现象的机会就越大。也正因如此,集线器的数据传输效率是比较低的,因为它在同一时刻只能有一个方向的数据传输,也就是所谓的“半双工”方式。如果网络中要选用集线器作为单一的连接设备,那么网络的规模**在10台以内,而且集线器带宽应为10/100Mb/s以上

集线器除了共享带宽这一不足之处外,还有另一个方面的不足必须要考虑,那就是它的广播工作方式。因为集线器属于OSI七层模型的物理层,基本上不具有“智能”的能力,更别说“学习”功能了。它也不具备交换机所具有的MAC地址表,所以它发送数据时都是没有针对性的,而是采用广播方式发送。也就是说,当它要向某结点发送数据时,不是直接把数据发送到目的结点,而是把数据包发送到与集线器相连的所有结点

这里引入两个概念:冲突域(CollisionDomain)和广播域(BroadcastDomain)。当两个比特在同一介质上同时传输时就会产生冲突。所谓冲突域就是指发送数据给一个单一目标所影响的范围;所谓广播域是指发送数据给一个不明确目标所影响的范围,集线器将把该广播包转发到除接收端口以外的所有端口,集线器上的所有设备属于同一个广播域

所有通过集线器(不管有多少个集线器)互连的网络中只有一个广播域、一个冲突域。这种广播式发送数据有两方面不足:一、用户数据包向所有结点发送,很可能带来数据通信的不安全因素,一些别有用心的人很容易就能截获他人的数据包:二、由于所有数据包都是向所有结点同时发送,可能造成网络拥塞现象,降低网络执行效率

数据链路层

数据链路层的主要功能是如何在不可靠的物理线路上进行数据的可靠传输。数据链路层完成的是网络中相邻结点之间可靠的数据通信。为了保证数据的可靠传输,发送方把用户数据封装成帧(Frame),并按顺序传送各帧。由于物理线路的不可靠,因此发送方发出的数据帧有可能在线路上出错或丢失,从而导致接收方不能正确接收到数据帧。为了保证能让接收方对接收到的数据进行正确性判断,发送方为每个数据分块计算出CRC(循环冗余检验),并把CRC添加到帧中,这样接收方就可以通过重新计算CRC来判断数据接收的正确性。一旦接收方发现接收到的数据有错,则发送方必须重传这一帧数据。然而,相同帧的多次传送也可能使接收方收到重复的帧。比如,接收方给发送方的“确认帧”被**后,发送方也会重传上一帧,此时接收方就可能接收到重复帧。数据链路层必须解决由于帧的损坏、丢失和重复所带来的问题

数据链路层要解决的另一个问题是防止高速发送方的数据把低速接收方“淹没”。因此,需要某种信息流量控制机制使发送方得知接收方当前还有多少缓存空间。为了控制的方便,流量控制常常和差错处理一同实现

在最普遍的以太网中,数据链路层通过MAC(Media Access Control,媒体访问控制)地址负责主机之间数据的可靠传输。数据链路层的设备必须能够识别出数据链路层的地址,即MAC地址。一个设备如果能识别MAC地址,该设备至少是数据链路层以上的设备。数据链路层的网络设备主要有网卡、网桥和交换机

1、网卡(NIC)

网卡(Network Interface Card,NIC)也叫网络适配器,是连接计算机与网络的硬件设备。网卡的主要工作原理是整理计算机上发往网线上的数据,并将数据分解为适当大小的数据帧之后向网络上发送出去。对于网卡而言,每块网卡都有一个唯一的网络结点地址, 它是网卡生产厂家在生产时烧入ROM(Read Only Memory,只读存储芯片)中的,叫做MAC地址,且保证绝对不会重复

网卡插在计算机或服务器扩展槽中,通过网络线(如双绞线、同轴电缆或光纤)与网络交换数据、共享资源。计算机对接收到的数据帧进行比较,如果数据帧中的目标MAC地址与本机网卡的MAC地址相同,或者目标MAC地址是广播MAC地址,即 “FFFFFFFFFFFF”,则计算机对数据帧进行处理;否则,计算机丢弃该数据帧

可以在DOS窗口中使用“ipconfig/all”命令査看计算机网卡的MAC地址,网卡的MAC地址用十六进制表示,占用48个比特,前24个比特表示厂商,后24个比特为设备编号

2、网桥(Bridge)

网桥工作在数据链路层,用于将两个LAN连接在一起并按MAC地址转发帧。物理层的集线器可以扩展网络的规模,但所有通过集线器相连的主机属于同一个冲突域,任何时刻只能有一台主机发送数据,如果有两台主机同时发送数据就会发生冲突,导致数据发送失败。当同一个冲突域中的主机数据量非常多时,数据发生冲突的可能性大大增加,此时可以使用网桥来分隔冲突域

网桥可以用来分隔冲突域,把一个冲突域分隔成两个冲突域,通过增加冲突域的数量,减小每个冲突域的大小,减少冲突发生的可能。连接两个网段的网桥能从一个网段向另一个网段传送完整而且正确的帧,不会传送干扰或有问题的帧

网桥主要用于互联以太网分段,传输需在两个不同分段间传输的信息,但是阻断局部分段内的信息,因此网桥减少了网络上的通信总量

因为网桥能检査出一些故障,所以比中继器使用更广泛。两个通过中继器相连的网段,如果由于闪电而导致其中一个网段上有电干扰,中继器会把它传送到另一个网段。相反,如果干扰发生在通过网桥连接的网段中,网桥接收到一个不正确的帧,丢弃该帧。类似地,网桥不会把从一个网段传送来的冲突信号传送到另一个网段。因此,网桥会把故障控制在一个网段中而不会影响到另一个网段

网桥比中继器和集线器对数据包做更多的处理,延时也相对增加,一个双端口的网桥包括两个冲突域和一个广播域

3、交换机(Switch)

与网桥的工作过程类似,交换机也根据源MAC学习,根据目的MAC进行转发,按每一个数据帧中的MAC地址决策信息转发地址表

交换机转发方式分为3种情况:情况一、交换机对己知的单播帧,只往对应的端口转发;情况二、交换机对未知的单播帧,即交换机还没有学到数据帧中的目的MAC地址,交换机泛洪数据包,即发往除接收端口以外的所有端口;情况三、交换机对组播帧和广播帧进行泛洪转发,即发往除接收端口以外的所有端口

类似网桥,交换机提供了网络互联功能。交换机的每个端口都是一个**的冲突域, 可以为每个工作站提供更高的带宽。因为交换机可以使用现有的电缆、中继器、集线器和工作站的网卡,不必做高层的硬件升级;交换机对工作站是透明的,这样管理开销低廉,简化了网络结点的增加、移动和网络变化的*作;并且交换机的**与集线器所差无几,所以在当今的网络中,交换机被普遍使用

可以简单地把交换机看成是多端口的网桥,但二者有一些区别。网桥一般只有2个端口,而一般交换机最少也有4个端口,还有24端口、48端口,甚至更多口的交换;网桥采用软件进行转发,而交换机采用专门设计的集成电路,基于硬件进行数据转发,交换机以线路速率在所有的端口并行转发信息,提供了比传统网桥高得多的*作性能,*作接近单个局域网性能,远远超过普通网桥互联网络之间的转发性能;而且,交换机的端口造价远低于网桥

网络层

网络层(Network)的主要功能是完成网络中主机间的报文传输。在广域网中,这包括产生从源端到目的端的路由,根据采用的路由协议,选择最优的路径

网络层涉及的协议有IP、IPX等,网络层的设备必须能识别出网络层的地址,比如路由器、三层交换机等都可以根据IP地址做路径选择,它们都属于网络层设备

路由器是一种连接多个网络或网段的网络层设备,它能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读懂”对方的数据,从而构成一个更大的网络。它不是应用于同一网段的设备,而是应用于不同网段或不同网络之间的设备。路由器之所以能在不同网络之间起到“翻译”的作用,是因为它不再是一个纯硬件设备,而是支持相当丰富路由协议的软、硬结合的设备,支持的协议有RIP、OSPF、EIGRP等,这些路由协议就是用来实现连通不同网段或网络的

路由器有两大典型功能,即数据通道功能和控制功能。数据通道功能包括转发决定、背板转发,以及输出链路调度等,一般由特定的硬件来完成;控制功能一般用软件来实现,包括与相邻路由器之间的信息交换、**配置、**管理等

路由器具有判断网络地址和选择路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网。路由器属于网络层的一种互联设备,有隔离广播的作用,它的每个端口都是一个单独的广播域,也是一个单独的冲突域

在局域网接入广域网的众多方式中,通过路由器接入互联网是最为普遍的方式。使用路由器互联网络的最大优点是:各互联子网仍保持各自**,每个子网可以采用不同的拓扑结构、传输介质和网络协议,网络结构层次分明。通过路由器与互联网相连,则可完全**公司内部网络。有些路由器内部还集成了入侵防御和防火墙功能,因此使用路由器可以用来防御攻击,保护内部网络的安全

传输层

传输层(Transport Layer)是整个网络的关键部分,实现两个用户进程间端到端(End-to-End)的可靠通信,处理数据包错误、数据包次序,以及其他一些关键传输问题。向下提供通信服务的最高层,弥补通信子网的差异和不足,向上是用户功能的最低层。与数据链路层有相似之处,不同的地方在于前者是端到端的,后者是点到点的,而且比数据链路层协议复杂得多

传输层的主要功能有:提供建立、维护和拆除传输层连接,向网络层提供合适的服务,提供端到端的错误恢复和流量控制,向会话层提供**于网络层的传送服务和可靠的透明数据传输

传输层相关的协议有TCP (Tran**ission Control Protocol,传输控制协议)、UDP (User Datagram Protocol,用户数据报协议),它们涉及服务使用的端口号,主机根据端口号识别服务(常用的WWW服务端口号是80, Telnet服务端口号是23等),区分会话(源IP、源端口号、目标IP、目标端口号,四者共同唯一标识一个会话)

会话层

会话层(Session Layer)允许不同机器上的用户之间建立会话关系,会话层提供的服务之一是管理对话控制。会话层允许信息同时双向传输,或任一时刻只能单向传输。如果属于后者,类似于物理信道上的半双工模式,会话层将记录此时该轮到哪一方。一种与对话控制有关的服务是令牌管理,有些协议保证双方不能同时进行同样的*作,这一点很重要。为了管理这些活动,会话层提供了令牌,令牌可以在会话双方之间移动,只有持有令牌的一方可以执行某种关键性*作

另一种会话层服务是同步,如果在平均每小时出现一次大故障的网络上,两台机器间要进行一次两小时的文件传输,想想会出现什么样的问题?每一次传输中途失败后,都不得不重新传送这个文件。当网络再次出现大故障时,可能又会半途而废。为了解决这个问题,会话层提供了一种方法,即在数据中**同步点。每次网络出现故障后,仅仅重传最后一个同步点以后的数据

表示层

表示层(Presentation Layer)完成某些特定的功能,对这些功能人们常常希望找到普遍的解决办法,而不必由每个用户自己来实现。值得一提的是,表示层以下各层只关心从源主机到目标主机可靠地传送比特,而表示层关心的是所传送的信息的语法和语义

表示层服务的一个典型例子是用一种大家一致选定的标准方法对数据进行编码

网络上计算机可能采用不同的数据表示,所以需要在数据传输时进行数据格式的转换。例如在不同的机器上常用不同的代码来表示字符串(ASCII和EBCDIC)、整型数(二进制反码或补码),以及机器字的不同字节顺序等。为了让采用不同数据表示法的计算机之间能够相互通信并交换数据,在通信过程中使用抽象的数据结构来表示传送的数据,而在机器内部仍然采用各自的标准编码。管理这些抽象数据结构,并在发送方将机器的内部编码转换为适合网上传输的传送语法,以及在接收方做相反的转换等,都是由表示层来完成的

此外,表示层还涉及数据压缩和解压、数据加密和解密等工作

应用层

联网的目的在于支持运行于不同计算机上的进程进行通信,而这些进程则是为用户完成不同任务而设计的。可能的应用是多方面的,不受网络结构的**。应用层(Application Layer)包含大量人们普遍需要的协议,如HTTP(Hyper text Transfer Protocol,超文本传输协议),该应用默认使用的是TCP的80端口;FTP(File Transfer Protocol, 文件传输协议),多用于因特网上的文件传输,该应用管理端口默认使用的是TCP的21号端口;SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用于邮件的发送,该应用默认使用的是TCP的25号端口;POP3(Post Office Protocol Version 3,邮局协议版本3),用于邮件的接收,该应用默认使用的是TCP的110号端口;DNS(Domain Name System,域名**),用于因特网上域名的解析;Telnet(远程登录)是一种字符模式的终端服务,它可以使用户通过网络进入远程主机或网络设备,然后对远程主机或网络设备进行*作,这种连通可以发生在局域网里面,也可以通过互联网进行,该应用默认使用的是TCP的23号端口

对于需要通信的不同应用来说,应用层的协议都是必需的。比如,当某个用户想要获得远程计算机上的一个文件拷贝时,他要向本机的文件传输软件发出请求,这个软件与远程计算机上的文件传输进程通过文件传输协议进行通信,这个协议主要处理文件名、用户许可状态和其他请求细节的通信。远程计算机上的文件传输进程使用其他特征来传输文件内容

看到这里了,顺便在补一下四层结构的TCP/IP。

TCP/IP是目前最成功、使用最频繁的互联网协议。TCP/IP参考模型是四层结构,分别是网络访问层(NetworkAccess),包括OSI模型的物理层和数据链路层,在这一层可以看到数据帧的源和目的MAC地址;网际层(Internet),相当于OSI模型中的网络层,在这一层可以看到数据包的源和目的IP地址;传输层(Transport),和OSI模型中的传输层一致,在这一层可以看到数据分段源和目的的端口,以及所使用的协议;应用层(Application),包括OSI模型的上三层,即会话层、表示层和应用层

**O/OSI参考模型是在其协议被开发之前设计出来的。这意味着**O/OSI模型并不是基于某个特定的协议集而设计的,因而它更具有通用性。但另一方面,也意味着**O/OSI模型在协议实现方面存在某些不足。而TCP/IP模型正好相反。先有协议,模型只是现有协议的描述,因而协议与模型非常吻合。问题在于TCP/IP模型不适合其他协议栈。因此,它在描述其他非TCP/IP网络时用处不大

忽然怀念大学时候的网络课本,似乎也是这样密密麻麻全是文字,但是基础知识很扎实,当时觉得特别无聊和枯燥,学的也是皮毛。如今书到用时方恨少,还得自己抽时间自虐式学习


相关股票:
相关概念: 芯片 集成电路 通信服务

崛起的中科系,被改变的我国芯片产业格局

当前,以芯片为代表的信创产业逐步成为国家科技竞争力的重要标志。在国产CPU产业强势崛起的过程中,你首先想到的会是哪几企业?答案有很多,但“中科系”的提及率绝对很高。作为国家战略科技力量,“中科系”旗下

芯片战场丨芯片领域三箭齐发 英特尔跑步突围

21世纪经济报道记者倪雨晴 圣何塞报道在硅谷源泉之一的圣何塞,英特尔CEO帕特·基辛格(Pat Gelsinger)正在带领英特尔加速奔跑。当地时间9月19日,2023英特尔on技术创新大会于美国加利

OPPO重启芯片业务?国产芯片或需告别“单打独斗”

财联社9月19日讯(记者 唐植潇)近日有消息称,OPPO将会重启芯片业务,并且“有部分员工已经回流,加入到了车载业务之中”。记者就此事向OPPO方面进行核实,对方表示“不予置评”。特百惠(我国)数字与

600亿颗芯片!我国巨头正式宣布,美媒:**也没料到制裁这么快

我国芯片市场与美国依赖我国的集成电路市场一直以来都是一个巨大的市场,拥有庞大的需求和巨大的增长潜力。我国的电子消费市场一直在迅速增长,包括智能手机、电视、电脑和各种智能设备等,这些设备都需要高性能的芯

最新手机芯片天梯图:A17、华为麒麟9000S,排在什么位置?

近日,最火的两颗芯片分别是苹果的3nm芯片A17 Pro,虽然很多人吐槽它较上一代提升不明显,但论性能,可以碾压任何安卓芯片,甚至是领先2代的。另外一款芯片,则是华为麒麟9000S,当然,这颗芯片工艺

韩国芯片连续13个月暴跌,尹锡悦指责我国不采购,外媒:自食其果

据韩国媒体称,韩国的半导体出口额已经连续暴跌13个月了,比去年同比下降了28%左右。韩国政府急的焦头烂额。尹锡悦政府竟直接甩锅我国,话里话外都是指责,他认为韩国半导体卖不出竟是我国的原因,我国应该帮助

我国突破芯片瓶颈将影响全球秩序?美国很担心,指出我国关键弱点

我国在芯片半导体领域一直深受美国的**,通过贸易制裁的方式阻止高端芯片进入我国市场。这样的举措一度造成我国芯片领域发展断档,不过随着我国科技企业近几年的突破,目前我国已经在芯片制造方面取得了重大的成果

没有他,我国芯片发展至少要**十年?

前几天,华为一声不响的上线了mate60系列,带着麒麟芯片9000s强势回归,吸引了全世界的目光。而华为麒麟芯片**背后,我们不该忘记这位老人—张汝京。我国半导体之父,为回**造芯片,被开除**户籍,

陈清泰:未来汽车颠覆传统,50%以上的零部件体系面临重构

【有车以后 资讯】“未来汽车对传统汽车的颠覆性,使传统零部件体系的50%以上都面临重构。”12月16日,在全球智能汽车产业峰会(GIV2022)上,我国电动汽车百人会理事长陈清泰指出,智能汽车的价值链

「姿势」一辆汽车由多少个零件组成?保证你说不清...

投稿点这里汽车有多少个零件?其实这个问题并没有一个十分确切的标准答案...据估计,一般轿车约由1万多个不可拆解的**零部件组装而成。结构极其复杂的特制汽车,如F1赛车等,其**零部件的数量可达到2万个

全球最大的10家汽车零部件供应商 都是世界500强 无我国企业

【卡车之家 原创】美国《财富》**每年发布的世界500强排行榜,是以营业收入数据对全球企业作出排名的榜单。2017年“世界500强”榜单中,汽车制造商和零部件厂商共占据33席(除去大型工程车辆企业),

汽车零部件企业哪家强?除了博世**还有这些名字你一定耳熟能详

文:懂车帝原创 李德喆[懂车帝原创 行业]9月18日,由《我国汽车报》主办,罗兰贝格协办的2019汽车零部件“双百强”企业发布会在江苏南京举行。在两份榜单中,博世、**、电装位列2019全球汽车零部件

汽车零部件行业现状及产业链

行业现状(Reference:产业运行 | 2021年汽车工业经济运行情况)中汽协预测:2022年我国汽车销量达到2700万辆,新能源销量超过550万辆(Reference:乘用车市场信息联席会)以乘

全球十大汽车零部件供应商,核心技术都被他们垄断,自主遗憾缺席

提到电影,我们会想到张艺谋、冯小刚,而很少会想到幕后的制作人;提起流行乐,我们会想到周杰伦、萧敬腾,而很少会想到背后的作词人。台前台后,一幕之别,知名度往往相差甚远。车界又何尝不是如此,知名车企我们都

高清汽车各零部件构造图,看完你就是汽车专家!

2023世界移动通信大会即将举行,大批中企强势回归!

来源:环球时报 【环球时报记者 倪浩 陶震 环球时报驻德国特约记者 青木】经过3年疫情后,全球最具影响力的通信展今年有望再现往日盛况。2月27日至3月2日,由全球移动通信**协会(GSMA)主办的20

太空新赛道:6G时代的卫星通信,究竟是什么?

近日华为、苹果争相推出手机卫星通信功能,成为一大亮点,不少手机厂商也将目光投到卫星通信。放眼未来,手机直连卫星的卫星通信服务将是大势所趋,也是6G时代的重要标志。华为以“北斗三号”为依托,率先把“卫星

光纤#光纤通信

国内企业在光通信产品的参数测试过程中,通常使用国外的先进测试设备。然而,这些测试仪器之间往往是孤立存在的,需要手动调试仪器并通过旋钮、按钮和人眼观察波形或数据。这不仅*作繁琐易出错,而且测试效率低下。

龙头20cm涨停,7天股价翻倍!一文看懂卫星通信前世今生及产业链

卫星通信概念股华力创通今日再度强势拉升,截至发稿,该股股价20cm涨停,7个交易日累计涨幅近113%,现报23.52元续刷阶段新高,总市值155.9亿元。消息上,有媒体从供应链获悉,Mate 60 P

工信部:目前我国尚不具备实现网络层面的移动通信号码归属地变更的条件

针对网友提出的“电话号码归属地更改”建议,工信部近日给出了官方回复。此前,有网友在人民网留言板向工信部留言称,“现在电话都是实名制,电话号绑定的***及一些主流的软件较多,更换号码后造成一系列问题

AD
更多相关文章