网络编程学习
个人学习的时候做的一些笔记… 如果大家想学网络编程可以看看这篇文章
知识点汇总:
1、网络编程的实质就是实现两个(或多个)计算机之间的数据交流。
2、网络中的设备,都会有唯一的一个数字标识,IP地址。现在命名IP地址的规定协议是IPv4协议,每个IP地址由4个0~255的数字组合而成,每个数字之间由 " . " 分隔。每个接入网络的计算机都有唯一的IP地址,这个IP地址可能是固定的,也可能是动态的。
3、由于IP地址比较长,不容易记忆,所以人们引进了域名的概念,例如 baidu.com。一个IP地址可以对应多个域名,但是一个域名只能有一个IP地址。(因为你输入baidu.com只能访问百度网站,而不能访问其他网站,否则那不是乱套了。但是我们可以通过其他的域名,比如baidu2.com也可以访问百度网站,这是可行的,但是百度公司可能没这么干)
4、不过,在网络中传输的数据,全部都是以IP地址为地址标识,所以每次在传输数据时都要把域名先转换成IP地址。而实现这种功能的服务器称之为DNS服务器,通俗的说法叫做域名解析。(例如用户在浏览器输入域名的时候,浏览器先请求DNS服务器,将域名转换为IP地址,然后再反馈给服务器,进行数据的交流等功能)
5、我们可以通过域名或IP地址找到网络中的网站、或者计算机等等设备,但是当DNS服务器不正常的时候就只能用IP地址进行访问了(因为无法进行域名到IP地址之间的转换了)
6、IP地址和域名很好的解决了在网络中找到一个计算机的问题,但是为了让一个计算机可以同时运行多个网络程序,就引入了另外一个东西——端口(port)
7、在同一个计算机中,每一个应用程序对应一个端口,这样计算机就可以通过端口对于每个程序进行区分,在程序进行数据交流的时候用端口进行匹配,就可以实现不同的应用程序之间不会干扰。
8、在硬件上规定,端口的号码必须位于0~65535之间,每个端口唯一的对应一个程序,一个程序可以有多个端口。这样一个程序运行在一台计算机上时,至少会占用一个端口进行网络通讯。
9、在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端。而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器。一旦通讯建立,则客户端和服务端完全一样,没有本质的区别。
10、网络编程中的两种程序就分别是客户端和服务端,例如QQ程序,每个QQ用户安装的都是客户端,而QQ服务端则运行在腾讯公司的机房中。这种网络编程的结构被称作 客户端/服务器 结构,也叫作Client/Server结构,简称C/S结构。
11、使用C/S结构的程序,需要分别开发客户端和服务器,这种结构的优势在于由于客户端是专门开发的,所以可以根据需要实现各种效果,专业点说就是表现力丰富,而服务端也要专门进行开发。但是这种结构也存在很多不足,例如通用性差,几乎不能通用等,也就是说一种程序的客户端只能和对应的服务器通讯,而不能和其他服务器通讯。在实际维护时,也需要维护专门的客户端和服务器端,维护的压力比较大。
12、其实在运行很多程序时,没有必要使用专用的客户端,而需要使用通用的客户端,例如浏览器,使用浏览器作为客户端的结构被称为 浏览器/服务器 结构。(Browser/Server结构,简称B/S结构)。
13、使用B/S结构的程序,在开发时只需要开发服务器端即可,这种结构的优势在于开发的压力比较小,不需要维护客户端。但是这种结构也存在着很多不足,例如浏览器的限制比较大,表现力不强,无法进行系统操作等。
14、C/S结构和B/S结构是现在网络编程中常见的结构,B/S结构其实是一种特殊的C/S结构。
15、网络编程中最重要,也最复杂的概念——协议(Protocol)。网络编程是为了计算机之间数据交流进行服务的,由于我们的计算机很笨,什么都不懂,那么就需要规定该数据的形式,这个数据的格式就是协议。
16、协议格式的编写是随意的。只要按照这种协格式能够生成唯一的编码,按照该编码可以唯一的解析出发送数据的内容即可。也正是因为各个网络程序之间的协议不同,所以才导致了客户端程序都是专用的结构。
17、网络编程中最重要的就是,协议的设计以及协议的生产和解析,这个才是网络编程中最核心的内容。
18、在现有的网络中,网络的通讯方式主要有两种,TCP(传输控制协议)方式 和 UDP(用户数据协议)方式。TCP和UDP的差异是,TCP需要接收方确认接收,才能发送成功,否则发送失败;而UDP无需对方是否确认接收,直接发送过去即可。TCP类似于打电话,而UDP类似于发短信。
上面记录一些基础知识,代码的话就还是戳这篇文章。
人成长的过程本质就是在不断改变,如果没有改变,也就无所谓成长。