要学习XMPP,就要先了解Socket编程,在学习Socket之前,还要先了解一下网络编程
一、网络编程基本概念
通过使用套接字来达到进程间通信目的的编程就是网络编程。
网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用,编程人员可以不用考虑……
网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理!
二、网络模型
计算机网络是指由通信线路互相连接的许多自主工作的计算机构成的集合体,各个部件之间以何种规则进行通信,就是网络模型研究的问题。
早期的计算机互相之间不能传递数据,为了解决这一问题,国际化标准组织定义了一个网络模型,通过统一的网络模型,计算机之间就能通过相同的网络模型来传输数据。
网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型。这两个模型在网络中应用最为广泛。
- OSI(开放系统互联Open System Interconnection)
- TCP/IP参考模型
(1)OSI参考模型
七层简述:
<1>物理层:主要定义物理设备标准,如网线的接口类型、各种传输介质的传输速率等。主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是常说的数模与模数转换)。这一层的数据叫做比特(bit),主要设备:集线器
<2>数据链路层:主要将从物理层接收的数据进行MAC地址的封装与解封装。常把这一层的数据叫做帧,主要设备:网卡,交换机
<3>网络层:选择合适的网间路由和交换结点, 确保数据及时传送,将从下层接收到的数据进行IP地址的封装与解封装。常把这一层数据叫做数据包,主要设备:路由器。
<4>传输层:定义了一些传输数据的协议和端口,如TCP、UDP协议,主要将从下层接收的数据进行分段和传输,到达目的地址后再进行重组,以往把这一层数据叫做段。
<5>会话层:通过传输层建立数据传输通路。在系统之间发起会话或者接受会话请求(设备之间需要互相认识)
<6>表示层:主要是进行对接收的数据进行解释、压缩与解压缩等,即把计算机能够识别的东西转化成人能够识别的东西(如图片、声音等)
<7>应用层:主要是一些终端的应用,比如说FTP(各种文件下载)、浏览器、QQ等,可以将其理解为在电脑屏幕上可以看到的东西,也就是终端应用。
主机间通信
每台主机都有7层(不同网络之间有相同的层次),每一层之间都遵守相同的协议,这样主机A和主机B之间才能正常的解析数据。
来了解一下分层原则:
- 网络中各结点都有相同的层次
- 不同结点相同层次具有相同的功能
- 同一结点相邻层间通过接口通信
- 每一层可以使用下层提供的服务,并向上层提供服务
- 不同结点的同等层间通过协议来实现对等层间的通信
(2)TCP/IP参考模型
TCP/IP参考模型实际上是在OSI参考模型之上又封装了一层,OSI只是定义了一个标准,并没有实质性的东西,所以OSI是虚的
电脑中有TCP/IP的应用,如下即是
三、网络通讯要素
- IP地址
- 端口号
- 传输协议
(1)IP地址(唯一标示网络设备的)
网络中设备的标示
不易记忆,可以用主机名
本地回环地址:127.0.0.1 主机名:localhost
(2)端口号(定位程序)
用于标示进程的逻辑地址,不同进程的标示
有效端口:0~65535,其中0~1024由系统使用或者保留端口,开发中要使用1024以上的端口
(3)传输协议(用什么样的方式进行交互)
通讯的规则
常见协议:TCP、UDP
(4)URL(统一资源定位) http://ip:80/文件路径
(5)资源类型是通过MimeType来区分的,告诉客户端是什么类型的资源
四、TCP和UDP区别
TCP(传输控制协议)
- 建立连接,形成传输数据的通道
- 在连接中进行大数据传输(数据大小不受限制)
- 通过三次握手完成连接,是可靠协议,安全送达
- 必须建立连接,效率会稍低
UDP(用户数据报协议)
- 将数据及源和目的封装成数据包中,不需要建立连接(源端口和目的端口)
- 每个数据报的大小限制在64K之内
- 因为无需连接,因此是不可靠协议
- 不需要建立连接,速度快