网络基础知识

2021年1月25日 study

2021年5月12日 review

《Java网络编程核心技术详解》-Java网络编程入门

  1. 什么是进程?(在这篇文章中的理解)
  2. 什么是网络协议?(在这篇文章中的理解)
  3. 什么是局域网、广域网?
  4. 如何使不同的网络之间能进行信息交流?
  5. 为什么需要OSI模型?
  6. OSI模型是什么?
  7. 为什么要这么设计OSI模型?
  8. 为什么需要TCP/IP模型?什么是TCP/IP模型?
  9. 什么是socket?java提供了哪些socket?

进程

进程指运行中的程序,进程的任务就是执行程序中的代码。

网络协议

如下图所示,人与人之间通过某种语言来交流,网络中的主机之间也通过“语言”来交流,这种语言称为网络协议,这是对网络协议的通俗解释。

局域网/广域网

按照计算机联网的区域大小,可以把网络分为局域网(Local Area Network,LAN)和广域网(Wide Area Network,WAN)。

  • 局域网指在一个较小地理范围内的各种计算机互联在一起的通信网络,可以包含一个或多个子网,通常局限在几千米的范围之内。例如在一个房间、一座大楼,或是在一个校园内的网络可称为局域网。
  • 广域网连接地理范围较大,常常是一个国家或是一个洲,是为了让分布较远的各局域网互联。

OSI模型

Internet是由许多小的网络互联成的国际性大网络,在各个小网络内部使用不同的协议,那么如何使不同的网络之间能进行信息交流呢?——靠网络上的标准语言—TCP/IP

OSI参考模型:一个网络系统只要遵循OSI模型,就可以和位于世界上任何地方的、也遵循OSI模型的其他网络系统连接。

(1) 物理层(Physical Layer)

传输信息离不开物理介质,如双纽线和同轴电缆等。

数据链路层负责在两个相邻节点间的线路上,无差错地传送以为单位的数据。在传送数据时,如果接收方检测到所传数据中有差错,就要通知发送方重发这一帧。本层的典型设备是交换机(Switch)。

  • dawson:相邻节点之间传送以帧为单位的数据,确保数据的正确性,如果接收方检测到数据有误,则重新传送。典型设备是交换机。

(3) 网络层(Network Layer)

在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多个通信子网。网络层的任务就是选择合适的网间路由和交换节点,确保数据被及时地传送到目标主机。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,包头中含有逻辑地址信息——源主机和目标主机的网络地址。本层的典型设备是路由器(Router)。

  • dawson:选择合适的节点,确保数据能被及时的传送到目标主机。把帧组装成数据包,数据包头中含有源主机和目标主机的网络地址。典型设备是路由器。

如下图所示,主机A发送的数据先后经过节点1和节点4,最后到达主机B。相邻两个节点之间的线路被称为数据链路,比如主机A与节点1、节点1与节点4,以及节点4与主机B之间的线路。数据链路层负责数据链路上的数据传输。从主机A到主机B的整个路径被称为路由,网络层负责选择合适的路由。

(4) 传输层(Transport Layer)

该层的任务是根据通信子网的特性来充分利用网络资源,为两个端系统(也就是源主机和目标主机)的会话层提供建立、维护和取消传输连接的功能,以可靠方式或者不可靠方式传输数据。所谓可靠方式,指保证把源主机发送的数据正确地送达目标主机;所谓不可靠方式,则指不保证把源主机发送的数据正确地送达目标主机,数据有可能丢失,或出错。在这一层,信息的传送单位是报文。

  • dawson:为源主机和目标主机的会话层提供建立、维护和取消传输连接的功能。数据的传送单位是报文。

(5) 会话层(Session Layer)

这一层也可以被称为会晤层或对话层,在会话层及以上层次中,数据传送的单位不再另外命名,统称为报文。会话层管理进程之间的会话过程,即负责建立、管理、终止进程之间的会话。会话层还通过在数据中插入校验点来实现数据的同步。

  • dawson:管理进程之间的会话。

(6) 表示层(Presentation Layer)

表示层对上层数据进行转换,以保证一个主机的应用层的数据可以被另一个主机的应用层理解。表示层的数据转换包括对数据的加密、解密、压缩、解压和格式转换等。

  • dawson:进行数据转换,包括加密、解密、压缩、解压和格式转换等。

(7) 应用层(Application Layer)

应用层确定进程之间通信的实际用途,以满足用户实际需求。浏览Web站点、收发E-mail、上传或下载文件以及远程登入服务器等都可以看作是进程之间通信的实际用途。

  • dawson:实际的业务需求。

如上图所示,当源主机向目标主机发送数据时,在源主机方,数据先由上层向下层传递,每一层都会给上一层传递来的数据加上一个信息头(header),然后向下层发出,最后通过物理介质传输到目标主机。在目标主机方,数据再由下层向上层传递,每一层都先对数据进行处理,把信息头去掉,再向上层传输,最后到达最上层,就会还原成实际的数据。各个层加入的信息头有着不同的内容,比如网络层加入的信息头中包括源地址和目标地址信息;传输层加入的信息头中包括报文类型、源端口和目标端口、序列号和应答号等信息。在图1-9中,AH、PH、SH、TH、NH和DH分别表示各个层加入的信息头,数据链路层还会为数据加上信息尾DT。

在生活中,也常常采用这种方式来传输实际物品。比如张三给李四邮寄一封信,真正要传输的内容是信。为了保证信能正确到达目的地,在发送时,需要把信封装到一个信封中,上面写上发信人和收信人地址。接收方收到了被封装的信,需要拆开信封,才能得到里面的信。

OSI参考模型把网络分为多个层次,每个层次都有明确的分工,这简化了网络系统的设计过程。例如在设计应用层时,只需考虑如何创建满足用户实际需求的应用,在设计传输层时,只需考虑如何在两个主机之间传输数据,在设计网络层时,只需考虑如何在网络上找到一条发送数据的路径,即路由。

对等层之间互相通信需要遵守一定的规则,如通信的内容和通信的方式,这种规则被称为网络协议(Protocol)。值得注意的是,OSI参考模型并没有具体的实现方式,它没有在各层制定网络协议,但它为其他计算机厂商或组织制定网络协议提供了参考框架。网络的各个层次都有相应的协议,以下归纳了OSI各个层的一些典型协议,这些协议均由第三方提供。

  • 物理层协议:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

  • 数据链路层协议:HDLC、PPP、IEEE 802.3/802.2等。

  • 网络层协议:IP、IPX、ICMP、IGMP、AppleTalk DDP等。

  • 传输层协议:TCP、UDP、SPX等。

  • 会话层协议:NetBIOS、RPC、NFS、AppleTalk等。

  • 表示层协议:ASCII、GIF、JPEG、MPEG等。

  • 应用层协议:TELNET、FTP、HTTP、SNMP、SMTP等。

  • dawson:OSI模型把网络分为7层,每一层有明确的分工,是为了简化网络系统的设计。主机之间传送数据,就如同写信一样,要传达给对方的只是信中的内容,但需要进行层层包装。

TCP/IP参考模型

由于OSI参考模型过于庞大和复杂,所以它难以被投入实际运用中。与OSI参考模型相似的TCP/IP参考模型吸取了网络分层的思想,但是对网络的层次做了简化,并且在网络各层(除主机-网络层外)都提供了完善的协议,这些协议构成了TCP/IP集,简称TCP/IP。

  • dawson:OSI模型过于复杂,难以落地应用。因此有了简化后的TCP/IP模型。TCP/IP模型有4层:网络接口层、网络层、传输层、应用层。除了网络接口层,其他的每一层都提供了完整的协议。对应关系如下图:

TCP/IP参考模型分为4个层次:应用层、传输层、网络互联层和主机-网络层。每一层都有相应的协议。确切地说,TCP/IP应该被称为TCP/IP集,它是TCP/IP参考模型的除主机-网络层以外的其他三层的协议的集合,而IP和TCP则是协议集的最核心的两个协议。

下表列出了各层的主要协议,其中主机-网络层的协议是由第三方提供的。

网络接口层、网络层、应用层、传输层

(1) 网络接口层

实际上TCP/IP参考模型没有真正提供这一层的实现,也没有提供协议。它只是要求第三方实现的网络接口层能够为上层——网络层提供一个访问接口,使得网络层能利用网络接口层来传递IP数据包。

美国电气及电子工程师学会(Institute of Electrical and Electronics Engineer,IEEE)制定了IEEE802.3和IEEE802.4协议集,它们位于OSI参考模型的物理层和数据链路层,相当于位于TCP/IP参考模型的主机-网络层。采用IEEE802.3协议集的网络被称为以太网,采用IEEE802.4协议集的网被称为令牌环网。以太网和令牌环网都向网络互联层提供了访问接口。

  • dawson:相当于OSI参考模型的“物理层”和“数据链路层”,屏蔽底层具体的实现,为上层“网络层”提供统一的访问接口。由于TCP/IP参考模型没有实现“网络接口层”,也没有提供协议。IEEE制定了两个协议,用这两个不同的协议的网络,被称为以太网和令牌环网。

(2) 网络层

网络层是整个参考模型的核心。它的功能是把IP数据包发送到目标主机。为了尽快地发送数据,把原始数据分为多个数据包,然后沿不同的路径同时传递。如下图所示,由主机A发出的原始数据被分为3个数据包,然后沿不同的路径到达主机B,可谓殊途同归。数据包到达的先后顺序和发送的先后顺序可能不同,这就需要上层——传输层对数据包重新排序,还原为原始数据。

  • dawson:把IP数据包从源主机发送到目标主机。为了更快的发送到,会把原始数据进行拆分成多个数据包,沿不同的路线进行传送。IP协议:规定了数据包的格式、数据包如何寻找到路由。

“网络层”具备连接异构网的功能。图1-12展示了其连接以太网和令牌环网的方式。以太网和令牌环网是不同类型的网,两者有不同的网络拓扑结构。以太网和令牌环网都向“网络层”提供了统一的访问接口,访问接口向“网络层”隐藏了下层网络的差异,使得两个网络之间可以顺利传递数据包

网络互联层采用的是IP(Internet Protocol),它规定了数据包的格式,并且规定了为数据包寻找路由的流程

(3) 传输层

“传输层”的功能是使源主机和目标主机上的进程可以进行会话。在“传输层”定义了TCP/UDP两种协议。TCP是一种面向连接的、可靠的协议。它将源主机发出的字节流无差错地发送给互联网上的目标主机。UDP是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。

  • dawson:使源主机和目标主机的进程可以进行会话。(网络层是通过IP找到主机与主机之间的通信,传输层则可通过额外增加PORT,来使得进程与进程通信。)TCP/UDP协议,TCP是一种面向连接的、可靠的协议。UDP是一个无连接、不可靠的协议。

(4) 应用层

对应OSI模型的“会话层”、“表示层”和“应用层”。基于TCP的“应用层”协议主要包括:FTP、Telnet、HTTP、HTTPS、POP3、IMAP4、SMTP;基于UDP的应用层协议主要包括:SNMP、DNS。

  • dawson:对应OSI模型的“会话层”、“表示层”和“应用层”。协议有FTP、Telnet、HTTP、HTTPS(TCP);DNS(UDP)。

客户/服务器通信模式

TCP/UDP推动了客户/服务器通信模式的广泛运用。在通信的两个进程中,一个进程为客户进程,另一个进程为服务器进程。客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求。

  • 传输层向应用层提供了套接字Socket接口,Socket封装了下层的数据传输细节,应用层的程序通过Socket来建立与远程主机的TCP连接以及进行数据传输。

站在应用层的角度,两个进程之间的一次通信过程从建立TCP连接开始,接着交换数据,到断开连接结束。套接字可以被看作是通信线路两端的收发器,进程通过套接字来收发数据,如下图所示。

在Java中,有3种套接字类:java.net.Socketjava.net.ServerSocketDatagramSocket。其中SocketServerSocket类建立在TCP基础上,DatagramSocket类建立在UDP基础上。Java网络程序都采用客户/服务通信模式。

posted @ 2021-05-12 16:48  ddhhdd  阅读(559)  评论(0)    收藏  举报