一、计算机网络
计算机网络是相互连接的独立自主的计算机的集合。最简单的网络形式如下:
首先,计算机A和计算机B通信,必须知道双方计算机的IP地址是多少,然后是端口号,即要和计算机上哪个应用程序通信。两台计算机通信不能想怎么通信就怎么通信,双方必须达成一致,既遵守相同的通信协议。
二、IP地址
a、IP网络中每台主机都必须有一个唯一的IP地址。
b、IP地址是一个逻辑地址。
c、因特网上的IP地址具有全球唯一性。
d、32位,4个字节,常用点分十进制的格式表示。
三、协议
a、为网络通信而建立的规则、标准或约定。
b、不同层具有各自不同的协议。
四、ISO/OSI七层参考模型
国际标准化组织ISO提出了OSI(Open System Interconnection)七层参考模型。如下表所示:
应用层 | 为用户的网络应用程序提供网络通信的服务 | 远程登录协议Telnet、文件传输协议FTP、超文本传输协议HTTP、域名服务DNS、简单邮件传输协议SMTP、邮局协议POP3 |
表示层 | 处理被传送数据的表示问题,及信息的语法和语义 | |
会话层 | 在两个通信的应用程序之间建立、组织和协调其相互之间的通信 | |
传输层 | 端到端的连接,提供数据传输服务 | 传输控制协议TCP、用户数据报协议UDP |
网络层 | 提供IP地址和路由,负责找出最佳的传输路线 | 网际协议IP、Internet互联网控制报文协议ICMP、Internet组管理协议IGMP |
数据链锯层 | 提供介质访问,加强物理层的传输功能 | |
物理层 | 提供二进制传输,确定在通信信道上如何传输比特流 |
PS:
a、OSI参考模式是一个抽象的网络参考模型,只是一个功能的划分。
b、在进行一次网络通信时,每一层为本次通信提供本层的服务,通信实体的对等层之间不允许直接通信。
c、各层之间是严格单向依赖。
d、上层使用下层提供的服务,下层向上层提供服务。
e、两个通信实体进行通信时,应用层所发出的数据经过表示层、会话层、传输层、网络层、数据链路层,最终到达物理层,在该层通过物理线路传输给另一个实体的物理层。然后数据再依次向上传递,传递给另一个实体的应用层。
五、数据封装
一台计算机要向另一台计算机发送数据,首先必须将该数据打包,打包的过程称为封装。封装就是在数据前面加上特定的协议头部。如下图所以:
六、TCP/IP模型
因为OSI七层参考模型比较复杂,所以目前应用的比较多的是TCP/IP模型,该模型包含四个层次:应用层、传输层、网络层、网络接口层。
七、端口
传输层提供进程通信的能力,为了标识通信实体中进行通信的进程,TCP/IP协议提出了协议端口,简称端口。
端口是一种抽象的软件体系结构(包括一些数据结构和I/O缓冲区)。应用程序通过系统调用与某端口建立连击后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都通过该端口输出。
端口用一个整数型标识符来表示,即端口号。端口号与协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立,也就是说,基于TCP和UDP协议的不同网络程序,它们可以拥有相同的端口号。端口使用一个16位的数字来表示,它的范围是0~65535,1024以下的端口号保留给预定义的服务。
八、套接字
套接字存在于通信区域中。通信区域也叫地址簇,它是一个抽象的概念,主要用于将通过套接字通信的进程的共有特性综合到一起。套接字通常只与同一区域的套接字交换数据。windows sockets只支持一个通信区域:网际域AF_INET,这个域被使用网际协议簇通信的进程使用。
九、网络字节顺序
为保证数据的正确性,在网络协议中需要指定网络字节顺序,TCP/IP协议使用16位整数和32位整数的高位先存格式。由于不同计算机存放数据字节的顺序不同,这样发送方发送数据后,即使接收方接收到该数据,也有可能无法查看所接受到的数据。所以在网络中不同主机间通信时,要统一采用网络字节顺序。
十、客户机/服务器模式
首先服务器要先启动,并根据请求提供相应的服务:
1、打开一个通信通道并告知本地主机,它愿意在某一地址和端口上接收客户请求。
2、等待客户请求到达该窗口。
3、接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要激活一个新的进程来处理这个客户请求。新进程(或线程)处理此客户请求,并不需要对其它请求做出应答。服务完毕后,关闭此新进程与客户的通信链路,并终止。
4、返回第二步。
5、关闭服务器。
而客户方:
1、打开一个通信通道,并连接到服务器所在主机的特定端口。
2、向服务器发送服务请求报文,等待并接收应答;继续提出请求。
3、请求结束后关闭通信通道并终止。
参考:《VC深入详解》