0
点赞
收藏
分享

微信扫一扫

网络编程基本概念

一.计算机网络

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信 线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源 共享和信息传递的计算机系统。
从其中我们可以提取到以下内容: 1. 计算机网络的作用:资源共享和信息传递。 2. 计算机网络的组成:
a) 计算机硬件:计算机(大中小型服务器,台式机、笔记本等)、外部设备(路 由器、交换机等)、通信线路(双绞线、光纤等)。
b) 计算机软件:网络操作系统(Windows 2000 Server/Advance Server、Unix、 Linux 等)、网络管理软件(WorkWin、SugarNMS 等)、网络通信协议(如 TCP/IP 协议栈等)。

二.网络通信协议

网络通信协议 通过计算机网络可以实现不同计算机之间的连接与通信,但是计算机网络中实现通信必 须有一些约定即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定 标准。就像两个人想要顺利沟通就必须使用同一种语言一样,如果一个人只懂英语而另外一 个人只懂中文,这样就会造成没有共同语言而无法沟通。 国际标准化组织(ISO,即 International Organization for Standardization)定义了网 络通信协议的基本框架,被称为 OSI(Open System Interconnect,即开放系统互联)模 型。要制定通讯规则,内容会很多,比如要考虑 A 电脑如何找到 B 电脑,A 电脑在发送信 息给 B 电脑时是否需要 B 电脑进行反馈,A 电脑传送给 B 电脑的数据格式又是怎样的?内 容太多太杂,所以 OSI 模型将这些通讯标准进行层次划分,每一层次解决一个类别的问题, 这样就使得标准的制定没那么复杂。OSI 模型制定的七层标准模型,分别是:应用层,表示 层,会话层,传输层,网络层,数据链路层,物理层。

三.OSI 七层协议模型

网络编程基本概念_传输层
虽然国际标准化组织制定了这样一个网络通信协议的模型,但是实际上互联网通讯使用 最多的网络通信协议是 TCP/IP 网络通信协议。 TCP/IP 是一个协议族,也是按照层次划分,共四层:应用层,传输层,互连网络层, 网络接口层(物理+数据链路层)。 那么 TCP/IP 协议和 OSI 模型有什么区别呢?OSI 网络通信协议模型,是一个参考模型, 而 TCP/IP 协议是事实上的标准。TCP/IP 协议参考了 OSI 模型,但是并没有严格按照 OSI 规定的七层标准去划分,而只划分了四层,这样会更简单点,当划分太多层次时,你很难区 分某个协议是属于哪个层次的。TCP/IP 协议和 OSI 模型也并不冲突,TCP/IP 协议中的应用 层协议,就对应于 OSI 中的应用层,表示层,会话层。就像以前有工业部和信息产业部, 现在实行大部制后只有工业和信息化部一个部门,但是这个部门还是要做以前两个部门一样 多的事情,本质上没有多大的差别。TCP/IP 中有两个重要的协议,传输层的 TCP 协议和互 连网络层的 IP 协议,因此就拿这两个协议做代表,来命名整个协议族了,再说 TCP/IP 协议 时,是指整个协议族

四.网络协议的分层

由于网络结点之间联系很复杂,在制定协议时,把复杂成份分解成一些简单的成份,再 将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一 层,而与再下一层不发生关系。 把用户应用程序作为最高层,把物理通信线路作为最低层,将其间的协议处理分为若干 层,规定每层处理的任务,也规定每层的接口标准。 ISO 模型与 TCP/IP 模型的对应关系。
网络编程基本概念_网络_02

五.数据封装与解封

由于用户传输的数据一般都比较大,有的可以达到 MB 字节,一次性发送出去十分困 难,于是就需要把数据分成许多片段,再按照一定的次序发送出去。这个过程就需要对数据 进行封装。 数据封装(Data Encapsulation)是指将协议数据单元(PDU)封装在一组协议头和 协议尾中的过程。在 OSI 七层参考模型中,每层主要负责与其它机器上的对等层进行通信。 该过程是在协议数据单元(PDU)中实现的,其中每层的 PDU 一般由本层的协议头、协议 尾和数据封装构成。

5.1.数据发送处理过程

(1)应用层将数据交给传输层,传输层添加上 TCP 的控制信息(称为 TCP 头部), 这个数据单元称为段(Segment),加入控制信息的过程称为封装。然后,将段交给网络 层。
(2)网络层接收到段,再添加上 IP 头部,这个数据单元称为包(Packet)。然后, 将包交给数据链路层。
(3) 数据链路层接收到包,再添加上 MAC 头部和尾部,这个数据单元称为帧 (Frame)。然后,将帧交给物理层。
(4)物理层将接收到的数据转化为比特流,然后在网线中传送。

5.2.数据接收处理过程

(1)物理层接收到比特流,经过处理后将数据交给数据链路层。
(2)数据链路层将接收到的数据转化为数据帧,再除去 MAC 头部和尾部,这个除去 控制信息的过程称为解封,然后将包交给网络层。
(3)网络层接收到包,再除去 IP 头部,然后将段交给传输层。
(4)传输层接收到段,再除去 TCP 头部,然后将数据交给应用层。
从以上传输过程中,可以总结出以下规则:
(1)发送方数据处理的方式是从高层到底层,逐层进行数据封装。
(2)接收方数据处理的方式是从底层到高层,逐层进行数据解封装。
接收方的每一层只把对该层有意义的数据拿走,或者说每一层只能处理发送方同等层 的数据,然后把其余的部分传递给上一层,这就是对等层通信的概念。
数据封装与解封: 数据封装
网络编程基本概念_传输层_03
数据解封
网络编程基本概念_应用层_04

六.IP 地址与端口

6.1.IP 地址

用来标识网络中的一个通信实体的地址。通信实体可以是计算机、路由器等。 比如互 联网的每个服务器都要有自己的 IP 地址,而每个局域网的计算机要通信也要配置 IP 地址。
路由器是连接两个或多个网络的网络设备。 目前主流使用的 IP 地址是 IPV4,但是随着网络规模的不断扩大,IPV4 面临着枯竭的 危险,所以推出了 IPV6。 IPV4:32 位地址,并以 8 位为一个单位,分成四部分,以点分十进制表示,如 192.168.0.1
IPV6:128 位(16 个字节)写成 8 个 16 位的无符号整数,每个整数用四个十六进制 位表示,每个数之间用冒号(:)分开,如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984
注意事项  127.0.0.1 本机地址  192.168.0.0–192.168.255.255 为私有地址,属于非注册地址,专门为组织机构内部使 用。

6.2.端口

IP 地址用来标识一台计算机,但是一台计算机上可能提供多种网络应用程序,如何来 区分这些不同的程序呢?这就要用到端口。 端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机 上运行多个网络应用程序。端口的表示是一个16位的二进制整数,对应十进制的0-65535。 Oracle、MySQL、Tomcat、QQ、msn、迅雷、电驴、360 等网络程序都有自己的端 口。

总结:
IP 地址好比每个人的地址(门牌号),端口好比是房间号。必须同时指定 IP 地址和端 口号才能够正确的发送数据

七.URL

在 www 上,每一信息资源都有统一且唯一的地址,该地址就叫 URL(Uniform Resource Locator),它是 www 的统一资源定位符。URL 由 4 部分组成:协议 、存放资 源的主机域名、资源文件名和端口号。如果未指定该端口号,则使用协议默认的端口。例如 http 协议的默认端口为 80。 在浏览器中访问网页时,地址栏显示的地址就是 URL。 在 java.net 包中提供了 URL 类,该类封装了大量复杂的涉及从远程站点获取信息的细 节。

八.Socket

我们开发的网络应用程序位于应用层,TCP 和 UDP 属于传输层协议,在应用层如何使 用传输层的服务呢?在应用层和传输层之间,则是使用套接字 Socket 来进行分离。 套接字就像是传输层为应用层开的一个小口,应用程序通过这个小口向远程发送数据, 或者接收远程发来的数据;而这个小口以内,也就是数据进入这个口之后,或者数据从这个 口出来之前,是不知道也不需要知道的,也不会关心它如何传输,这属于网络其它层次工作。 Socket 实际是传输层供给应用层的编程接口。Socket 就是应用层与传输层之间的桥 梁。使用 Socket 编程可以开发客户机和服务器应用程序,可以在本地网络上进行通信,也 可通过 Internet 在全球范围内通信。

九.TCP 协议和 UDP 协议

TCP 协议和 UDP 协议是传输层的两种协议。Socket 是传输层供给应用层的编程接口, 所以 Socket 编程就分为 TCP 编程和 UDP 编程两类。 在网络通讯中,TCP 方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建 立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该 数据。而 UDP 方式就类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的 虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。 这两种传输方式都在实际的网络编程中使用,重要的数据一般使用 TCP 方式进行数据 传输,而大量的非核心数据则可以通过 UDP 方式进行传递,在一些程序中甚至结合使用这 两种方式进行数据传递。 由于 TCP 需要建立专用的虚拟连接以及确认传输是否正确,所以使用 TCP 方式的速度 稍微慢一些,而且传输时产生的数据量要比 UDP 稍微大一些。
总结:
TCP 是面向连接的,传输数据安全,稳定,效率相对较低。
UDP 是面向无连接的,传输数据不安全,效率较高。

9.1.TCP 协议

TCP(Transfer Control Protocol)是面向连接的,所谓面向连接,就是当计算机双方 通信时必需经过先建立连接,然后传送数据,最后拆除连接三个过程。
TCP 在建立连接时又分三步走:
 第一步,是请求端(客户端)发送一个包含 SYN 即同步(Synchronize)标志的 TCP 报文,SYN 同步报文会指明客户端使用的端口以及 TCP 连接的初始序号。
 第二步,服务器在收到客户端的 SYN 报文后,将返回一个 SYN+ACK 的报文,表 示 客 户 端 的 请 求 被 接 受 , 同 时 TCP 序 号 被 加 一 , ACK 即 确 认 (Acknowledgement)。
 第三步,客户端也返回一个确认报文 ACK 给服务器端,同样 TCP 序列号被加一, 到此一个 TCP 连接完成。然后才开始通信的第二步:数据处理。
 这就是所说的 TCP 的三次握手(Three-way Handshake)

9.2.UDP 协议

基于 TCP 协议可以建立稳定连接的点对点的通信。这种通信方式实时、快速、安全性 高,但是很占用系统的资源。 在网络传输方式上,还有另一种基于 UDP 协议的通信方式,称为数据报通信方式。在 这种方式中,每个数据发送单元被统一封装成数据报包的方式,发送方将数据报包发送到网 络中,数据报包在网络中去寻找它的目的地。


举报

相关推荐

0 条评论