网络编程是指在计算机网络上进行数据传输和通信的编程技术。
目录
1. 网络基础知识:
- OSI模型和TCP/IP协议族:了解计算机网络的层次结构和TCP/IP协议族的基本概念。
- IP地址和端口:学习IP地址和端口的作用、分类和使用方式。
- 套接字(Socket):理解套接字的概念和功能,它是网络编程的核心。
因特网的组成
边缘部分
处在因特网边缘的部分就是连接在因特网上的所有的主机。这些主机又称为端系统(endsystem),“端”就是“末端”的意思(即因特网的末端)。端系统在功能上可能有很大的差别,小的端系统可以是一台普通个人电脑甚至是很小的掌上电脑,而大的端系统则可以是一台非常昂贵的大型计算机。端系统的拥有者可以是个人,也可以是单位(如学校、企业、政府机关等),当然也可以是某个ISP(即 ISP不仅仅是向端系统提供服务,它也可以拥有一些端系统)。边缘部分利用核心部分所提供的服务,使众多主机之间能够互相通信并交换或共享信息。
我们先要明确下面的概念。我们说:“主机A和主机B进行通信”,实际上是指:“运行在主机A上的某个程序和运行在主机B上的另一个程序进行通信”。由于“进程”就是“运行着的程序”,因此这也就是指:“主机A的某个进程和主机B上的另一个进程进行通信”。这种比较严密的说法通常可以简称为“计算机之间通信”这种一般的说法。
端系统之间的通信方式
在实际应用中,客户程序和服务器程序通常还具有以下一些主要特点。
客户程序:
(1)被用户调用后运行,在通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址。
(2)不需要特殊的硬件和很复杂的操作系统。
服务器程序:
(1)是一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求。
(2)系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址。
(3)一般需要强大的硬件和高级的操作系统支持。
客户与服务器的通信关系建立后,通信可以是双向的,客户和服务器都可发送和接收数据。
顺便要说一下,上面所说的客户和服务器本来都指的是计算机进程(软件)。使用计算机的人是计算机的“用户”(user)而不是“客户”(client)。但在许多国外文献中,经常也把运行客户程序的机器称为 client(在这种情况下也可把 client译为“客户机"),把运行服务器程序的机器称为server。因此我们应当根据上下文来判断client或server是指软件还是硬件。在本书中,有时为了清楚起见,我们也使用“客户端”(或“客户机”)或“服务器端”来表示“运行客户程序的机器”或“运行服务器程序的机器”。
路由器:实现分组交换,任务是转发收到的分组,
电路交换:
重要特点:在通话时间内,通话两端始终占用端到端的通信资源
不同类别的网络
计算机网络的性能
计算机网络的性能https://blog.csdn.net/woliele/article/details/135843434
计算机网络体系结构
在这两台计算机之间必须有一条传送数据的通路。但这还远远不够。至少还有以下几件工作需要去完成:
(1)发起通信的计算机必须将数据通信的通路进行激活(activate)。所谓“激活”就是要发出一些信令,保证要传送的计算机数据能在这条通路上正确发送和接收。
(2)要告诉网络如何识别接收数据的计算机。
(3)发起通信的计算机必须查明对方计算机是否已开机,并且与网络连接正常。
(4)发起通信的计算机中的应用程序必须弄清楚,在对方计算机中的文件管理程序是否已做好文件接收和存储文件的准备工作。
(5)若计算机的文件格式不兼容,则至少其中的一个计算机应完成格式转换功能。
(6)对出现的各种差错和意外事故,如数据传送错误、重复或丢失,网络中某个结点交换机出故障等,应当有可靠的措施保证对方计算机最终能够收到正确的文件。
还可以举出一些要做的其他工作。由此可见。相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的。为了设计这样复杂的计算机网络,早在最初的ARPANET设计时即提出了分层的方法。“分层”可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
协议与层次划分
具有五层协议的体系结构
2. TCP/IP编程:
- Socket编程:学习使用Socket API进行网络通信,包括创建、绑定、监听和连接套接字,以及发送和接收数据。
- TCP编程:了解TCP协议的特点和使用方式,包括面向连接、可靠传输和流式传输等。
- UDP编程:学习UDP协议的特点和使用方式,包括无连接、不可靠传输和数据报传输等。
3. HTTP编程:
- HTTP协议:了解HTTP协议的基本原理和请求/响应的格式。
- HTTP客户端编程:学习使用HTTP客户端库或API发送HTTP请求,处理响应和解析数据。
- HTTP服务器编程:了解如何使用HTTP服务器框架搭建自己的HTTP服务器,处理请求和发送响应。
4. WebSocket编程:
- WebSocket协议:学习WebSocket协议的基本原理和使用方式,它提供了双向通信的能力。
- WebSocket客户端编程:了解如何使用WebSocket客户端库或API与WebSocket服务器进行通信。
- WebSocket服务器编程:学习如何使用WebSocket服务器框架搭建自己的WebSocket服务器,处理连接和消息。
5. 并发网络编程:
- 多线程和多进程编程:了解如何使用多线程或多进程实现并发的网络编程,处理多个客户端的请求。
- 异步编程:学习使用异步编程模型(如回调、事件驱动)处理并发的网络请求,提高性能和可伸缩性。
- Select/Poll/Epoll:了解使用Select、Poll或Epoll等I/O多路复用机制来处理大量的并发连接。
6. 安全网络编程:
- SSL/TLS协议:了解使用SSL/TLS协议实现加密和认证,保护网络通信的安全性。
- 数字证书和公钥基础设施(PKI):学习数字证书的原理和使用方式,以及PKI的基本概念和流程。