网络编程
网络编程
网络编程的研究前提就是基于互联网,互联网就是将计算机彼此链接到一起的介质,网络编程就是基于互联网编写代码,让多个程序可以通过网络连接起来。
网络编程的目的就是为了可以开发出C/S架构的软件。
软件开发架构
软件开发架构就是程序员在编写软件的时候应该遵循的架构设计,类似于三层架构思想。
架构分类
软件开发架构可以分为两种:C/S架构 和 B/S架构。
1.C/S架构:
C/S架构其实就是client/server(客户端/服务端)架构,比如手机上的淘宝app、京东app等。
- C:client(客户端):主要与用户交互
- S:server(服务端):主要与数据交互
2.B/S架构:
B/S架构其实就是browser/server(浏览器/服务器)架构,比如淘宝的网页版、京东的网页版等。
- B:browser(浏览器):主要与用户交互
- S:server(服务器):主要与数据交互
架构的优缺点
C/S架构:
- 优势:针对客户端可以高度定制
- 劣势:需要用户去下载才能使用
B/S架构:
- 优势:无需下载,急速体验
- 劣势:无法做到高度定制,体验效果较差
目前的趋势其实更加偏向于B/S架构。
OSI七层协议
不同计算机之间要想实现无障碍交互,除了需要有物理链接介质之外还需要一套公有的标准,这个标准就是互联网协议,而互联网协议被OSI分为了七层,称为OSI七层协议。
OSI七层协议分别是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理链接层。
这七层也可以总结为五层:应用层(三层)、传输层、网络层、数据链路层、物理链接层。
OSI七层的本质其实就是规定了数据要想基于网络发送出去必须在计算机上经历一些固定的流程。
物理链接层与数据链路层
物理链接层
物理链接层其实就是物理链接介质,用于传递电信号用的。
数据链路层
数据链路层主要是用于解析了从物理链接层传来的一串二进制数(数据)。
这一层它做了两件事:
- 规定了二进制数据的分组方式
- 规定了'以太网协议'
以太网协议
但凡能够接入互联网的计算机都必须有一块网卡,每块网卡在出厂的时候都会被烧制一个全世界独一无二的编号。
这个编号是由12位16进制数组成,前六位是产商编号,后六位是流水线号,这个独一无二的编号也有一个称呼:mac地址(类似于身份证号),基于mac地址就可以实现计算机之间的数据通信了!
专业设施名词
1.交换机:让接入交互机的多台计算机之间彼此互联。
2.局域网:由交换机组成的网络称之为局域网(一个区域),如上图的四个服务器就是在一个局域网内。
3.广播:发送信息时在交换机中所有的计算机都可以接受到信息。
4.单播:向在交换机中的指定的计算机发送消息(通过mac地址)。
5.路由器:将局域网彼此链接起来并支持数据交互,互联网其实可以看成是由多个局域网链接在一起
网络层(IP协议)
网络层中有着一个IP协议,这个协议规定了每台接入互联网的计算机都必须有一个IP地址,IP地址可以唯一标识地球上独一无二的一台接入互联网的计算机。
IP地址目前有两个版本:IPV4和IPV6。
IPV4:点分十进制的形式,最小的是0.0.0.0,最大的是255.255.255.255,随着计算机的使用越来越普遍,IPV4地址不够用了,于是出现了IPV6。
IPV6:十六进制的形式,可以说IPV6可以表示出地球上每一粒沙子,可见它可以表示的数量
IP地址还可以分为公网IP和私网IP。
公网IP是可以直接被所有计算机从浏览器访问到的,但是需要花钱购买并且需要实名认证并备案,比如百度的IP地址:202.108.22.5,可以直接通过IP地址访问到百度。
私网IP是不可以被所有计算机从浏览器访问到的,我们所有人的电脑默认使用的都是私网IP。
传输层(PORT协议)与应用层
传输层
传输层有着一个PORT协议(端口协议)。
一台计算机上面可以运行很多数据交互软件,比如微信、qq,它们都是从内存中获取数据,为什么不会错乱呢?不会错乱就是因为端口协议的存在!
端口协议用于标识一台计算机上面正在运行的应用程序,比如它会把内存分成多个端口,你打开一个应用程序就会和某一个端口对应上。
端口号的范围是:0~65535,0~1024是系统经常使用的端口号,1024~8000是常用软件端口号,而我们以后写项目的时候推荐使用8000之后的端口。
注意事项
1.同一时间同一台计算机上面端口号不能冲突。
2.端口号是动态分配的,每次打开应用程序都可能被分配到不同的端口号。
总结
IP地址是用于标识全世界独一无二的一台接入互联网的计算,PORT号是用于标识一台计算机上面的某一个应用程序,那么IP地址+PORT号就能够标识全世界独一无二的一台计算机上面的某一个应用程序。
应用层
没有固定的协议,完全可以取决于程序员自己,比如:HTTP协议 HTTPS协议、FTP协议、自定义协议等。
TCP与UDP协议
TCP与UDP协议都是属于传输层的。
TCP协议
TCP协议也可以称为流式协议、可靠协议,基于TCP协议进行数据交互之前需要做一系列复杂的操作:三次握手和四次挥手,三次握手用于建立链接,四次挥手用于断开连接。
三次握手:
四次挥手:
UDP协议
UDP协议也可以称为丢包协议、不可靠协议,不需要建立双下通道,数据的传输速度快,但是可能会丢失,但是我们可以在UDP协议的基础之上做很多额外的扩展来保证数据的安全。
小问题
TCP协议之所以比UDP协议可靠,就是因为有双向通道,对不对?
答:描述的不够精确,不对!TCP协议之所以比UDP协议可靠,原因在于TCP协议发送消息有反馈机制。
基于TCP发送的消息会在本地先保存该消息,如果地方确认收到才会删除,否则在一定的时间内会频繁的多次发送知道确认或者超时为止。
UDP协议发送数据之后会立刻删除内存数据,不会保留。