网络通信、网络协议与网络编程

来源:互联网 发布:淘宝会员成长值怎么算 编辑:程序博客网 时间:2024/05/02 01:58
参考书籍:(我只是一个知识搬运工,把知识点总结了起来。)
[1] 金松河,王捷,黄永丽.Java程序设计经典课堂[M].北京:北京大学出版社,2014年8月第1版:323-326
[2] 谢均,谢希仁.计算机网络教程[M].北京:人民邮电出版社,2014年9月第4版:23-24

一、网络通信

1、基本概念

(1)网络通信是指计算机通过网络互相传递信息。
(2)通信协议是网络通信的基础,通信协议是网络中计算机之间进行通信时共同遵守的规则。不同的通信协议用不同的方法解决不同类型的通信问题。
(3)常用的通信协议有HTTP(超文本传输协议,应用层协议)、FTP协议(文件传输协议)、TCP/IP协议(传输控制协议/网际协议)、TCP协议(传输控制协议,运输层协议)、UDP协议(用户数据报,运输层协议)。

2、网络通信模型

(1)客户/服务器结构(Client/Server,缩写为C/S,胖客户):典型的C/S结构网络系统需要相应的客户端才能实现通信。
(2)浏览器/服务器结构(Browser/Server,缩写为B/S,瘦客户):典型的B/S结构网络系统只要通过浏览器即可访问,不需要在客户端机安装特定的软件。

3、通信交互过程的原理

客户机端程序在需要服务时向服务器提出服务申请,服务器端程序则等待客户提出服务器请求,并予以相应。服务器端程序始终运行,并且监听网络端口,一旦有客户发出请求,就会启动一个服务进程来响应客户机端的请求,同时继续监听网络端口,时刻为其他客户请求提供服务。
实现网络上不同机器之间的通信,必须要知道对方主机的地址和端口号。这里介绍一下IP地址、域名地址和端口号的概念。
(1)IP地址:IP地址时计算机网络中任意一台计算机的唯一标识。知道了网络中某一台主机的IP地址,就可以定位这台计算机。通过这种地址标识,网络中的计算机可以互相定位和通信。
(2)域名地址:域名地址时计算机网络中一台主机的标识名,可看做时IP地址的助记名。如www.baidu.com等。在Internet上,一个域名地址可以有多个IP地址与之相对应,一个IP地址可以对应多个域名。在访问网络资源时,一般只需要记住服务器的主机名就可以了,因为网络中的域名解析可以根据主机名查出对应的IP地址。有了服务器的IP地址,就可以访问这个主机了。
(3)端口号:网络通信的主体不是主机,而是主机中运行的进程。端口号就是为了在一台主机上标识进程而采取的手段,主机名(或IP地址)和端口的组合能唯一确定网络通信的主体,即进程。端口(port)是网络通信时同一主机上的不同进程的标识。一台服务器可以通过不同的端口提供不同的服务。

二、网络协议

1、基本概念

规定网络结点之间所交换的数据的格式和时序,以及在发送或接受数据时要采取的动作等问题,这些为进行网络中的数据的交换而建立的规则、标准即为网络协议(network protocol)。网络协议有很多协议,以下主要介绍运输层和应用层的相关协议。

2、运输层协议

运输层(transport layer,传输层)的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务。
在因特网中,主要有两个运输层协议。
(1)传输控制协议(Transmission Control Protocol,TCP):提供面向连接的、可靠的数据传输服务,其数据传输的单位的是报文段(segment)。
(2)用户数据报协议(User Datagram Protocol,UDP):提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。

(1)TCP协议(面向连接的、点对点的、提供可靠传输的)

TCP(Transmission Control Protocol)协议是一种面向连接的、提供可靠传输的协议。它可以确保接收方完全正确地接收到发送方所发送的全部数据。
发送方和接收方之间的两个端口必须建立连接,以便在TCP协议的基础上进行通信。在程序中,端口之间建立连接一般使用Socket(套接字)方法。
当服务器的Socket等待服务器请求(即等待建立连接)时,客户机的Socket可以要求进行连接,一旦这两个Socket连接成功,它们就可以进行双向数据传输。TCP协议为实现可靠的数据传输提供了一个点对点的通道。
TCP的主要特点
①TCP是面向连接的运输层协议,主要解决数据如何在网络中传输。应用程序在使用TCP进行数据传输时,必须先建立TCP连接。
②每一条TCP连接只能有两个端点,即每一条TCP连接只能是点对点的(一对一)。
③TCP提供可靠交付的服务。TCP提供可靠的数据传输,通过TCP连接传输的数据无差错、不丢失,并且按序到达。
④TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来存储存放双向通信的数据。

(2)UDP协议(无连接的、尽最大努力数据传输的协议)

UDP(User Datagram Protocol)是一种无连接的协议,它传输的是一种独立的数据报(Datagram)。UDP只能提供不可靠的交付,即数据报能否到达目的地、到达目的地的时间、数据的正确性和各个数据报到达的顺序都是不能完全保证的。使用UDP协议传输数据有大小限制,每个被传输的数据报必须限定在64KB之内。
UDP的优点
①UDP是无连接的,发送数据前不需要建立连接(当然发送数据结束时也没有来凝结可释放),因此减少了开销和发送数据前的时延。
②UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用流量控制和拥塞控制,因此主机不需要维持具有许多参数的、复杂的连接状态表。
③由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送率降低。这对某些实时应用是很重要的。
④UDP是面向报文的。应用程序需要选择合适大小的报文。
⑤UDP支持一对一、一对多、多对一和多对多的交互通信。
⑥用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要短得多。

3、应用层协议

应用层(application layer)是TCP/IP的体系结构的最高层。应用层的任务是如何通过应用进程间的交互来完成特定的网络应用。应用层协议定义的是应用进程间通信和交互的规则,这里的进程指的是正在运行的程序。对于不同的网络应用需要有不同的应用层协议。在因特网中的应用层有很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议等。应用层的数据单元成为报文(message)。
HTTP协议(超文本传输协议)
HTTP(Hyper Text Transfer Protocol)是关于如何在网络上传输超级文本的协议。HTTP是应用层协议,主要解决如何包装数据,它是建立在TCP协议之上的一种应用,默认端口是80端口。
HTTP协议使用了面向连接的、提供数据传输的TCP作为运输层协议,保证了数据的可靠传输。虽然HTTP使用TCP,但HTTP协议本身是一个无状态协议,也就是说,HTTP不要求服务器保留客户的任何状态信息,HTTP的无状态特性简化了服务器的特性,使得服务器更容易支持大量并发的HTTP请求。
HTTP协议的应用场合
HTTP协议是目前实现浏览器/服务器结构的应用(Browser/Server,瘦客户结构)的主要方式,例如Web应用。同时,HTTP也应用于客户端/服务器结构(Client/Server,胖客户结构)的应用程序,例如安卓应用和IOS应用当中,当前安卓有很多流行网络框架都是基于HTTP协议的,如Volley、OkHttp、xUtils等。

三、网络编程

1、URL编程技术

URL标识Internet上某个资源的位置,支持http、file、ftp等多种协议。通过URL标识,可以直接使用各种通信协议获取远端计算机上的资源信息,方便快捷地开发Internet应用。

2、TCP编程技术

TCP是可靠的连接通信技术,主要使用Socket(套接字)机制。Socket是TCP/IP协议中的传输层接口。TCP通信是使用TCP/IP协议、建立在稳定连接基础上的、以流传输数据的通信方式。它是目前实现Client/Server模式应用程序的主要方式。

3、UDP编程技术

UDP是无连接的快速通信技术,数据报是一种在网络上传播的、独立的、自包含地址信息的格式化信息。UDP通信使用UDP协议,数据报通信不需要建立连接,通信时数据报能否到达目的地、到达目的地的时间、数据的正确性和各个数据报到达的顺序都是不能完全保证的。因此,数据报通信也称为无连接通信。数据报通信主要用于传输一些数据量大的、非关键性的数据。
原创粉丝点击