web编程之网络基础
一、TCP、IP网络:
- TCP/IP是"Transmission Control Protocol/Internet Protocol"的简写,翻译成中文为
传输控制协议/互联网络协议
。 TCP/IP是一种网络通信协议
,它规范了网络上所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式及传送方式。TCP/IP 是Internet 的基础协议,也是一种计算机数据打包和寻址的标准方法
。
1.1:计算机网络综述:
- 计算机网络指将地理位置不同、具有独立功能的多台计算机及外部设备,通过通信线连接起来,再网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
- 主机主要分为两种:
服务器和客户端
。再Internet中提供服务的主机叫做服务器;通过访问服务器从而获得有用信息的主机叫做客户端。
1.网络分层:
-
每一层的功能都是相互独立,这使得它们可以仅完成自己的任务,比如传输、编码等。
-
TCP/IP将网络分为4层结构,
分别是应用层、传输层、网络层、接口层
。应用层 HTTP、SMTP等,是网络应用开发的重点 传输层 TCP或UDP 网络层 IP 接口层 处理物理细节
TCP/IP网络分层解释如下:
- 应用层:为用户的进程提供服务,
应用层负责发送及接收什么数据、如何解释数据、如何呈现数据、如何加密数据等问题,是网络应用程序开发者重点打交道的对象
。 - 传输层:
为两个主机的不同端口之间的通信提供服务
。端口是一种在同一个主机内的不同通道之间进行寻址的方式。传输层的发送方与接收方在物理上无须相邻。TCP/IP的传输层包括2中协议:TCP/UDP。TCP提供可靠的有序传输,UDP提供非可靠的传输
。 - 网络层:
为两个主机之间提供通信服务。网络层定义了数据如何被封装为传送报,并且定义了不同主机之间寻址方式
。 - 接口层:
负责相邻物理设备之间的信息传输
。接口层的工作非常多且复杂,它需要完成接口层的数据组装,加入必要的控制和校验数据,并且将二进制数据流(0/1)转换为物理链上的标准水平。
2.网络设备:
-
网络设备及部件是连接到网络的物理实体
。 -
网络传输及数据交换作用的设备,具体有:
集线器、交换机、网桥、路由器、网关、网络接口卡、无线接入点、调制解调器、光缆等
。集线器:是接口层设备。集线器是网络互连的最简单设备,它接收并识别网络信号,然后再生成信号并将其发送到网络的其他分支上。
交换机:是接口层设备,也是网络互联中最常用的设备。
网桥:是接口层设备。网桥通常用于物理异构的网络之间相互连接,比如以太网和令牌网之间。
路由器:是网络层设备。路由器是互联网的主要结点设备,通过发送者、接收者的IP地址和路由算法决定数据的收发路径。
网关:是一个通用概念,主要指不同网络环境之间协议转换,一般为应用层。
调试解释器:‘俗称:猫’,是接口层设备,用于连接计算机网络与传统通信网。‘猫’将计算机的数字信号转译成能够再常规电话线中传输模拟信号。因为模拟信道的传输距离更长,所以长距离的网络传输一般都需要经过’猫’转换。常见的家用’猫’:56k猫、ADSL猫、光钎猫。
无线接入点:是接口层设备。将有线网络转为无线网络,最常用的无线接入点 WIFI。
防火墙:是传输层及应用层的设备。防火墙通常位于不同网络的边界处,主要防止恶意程序及数据进入内部网路,或者防止机密信息泄露到广域网中。
3.IP地址:
- 网络地址:
是一个网络层概念,是互联网上主机再网络中具有逻辑地址,Internet 上采用IP地址表示网络地址。当前两种形式IP地址:IPV4、IPV6
。
4.域名:
- 由于IP地址由纯数字组成,很难让人记忆,且不能表达功能、地理位置等附加含义,
所以再TCP/IP网络形成不久,标准化组织就定义了域名这种主机地址表达方式
。 - 域名:是一个应用层概念,用于再数据传输时标识计算机的电子方位(有时也指地理位置、地理上的域名或有行政自主权的一个地方区域)。简单理解:域名是一个IP地址’面具’。
- 域名中的标号都由
英文字母和数字组成,每个标号不超过63个字符,也不区分大小写字母
。标号中除连字符(-)外不能使用其他标点符号。级别最低的域名写在最左边,而级别最高的域名写在最右边
。
5.URL:
-
为统一资源定位符,用来表示Internet上资源位置的标准。资源位置包括资源所在的主机及其在主机内的访问路径。这里所说的资源是指Internet上任何可访问的对象,包括文本、图像、视频流等。URL标准形式如下:
[协议:]//[主机]:[端口]/[路径]?[参数] # 举个栗子: https://51easymaster.com/?only=0
[协议]可以是:HTTP、FTP等应用层协议;
[主机]:是域名或IP地址;
[端口]:是传输层端口号;
[路径]:是以斜杠, '/'分割的主机内的路径;
[参数]:是以’&'分割的若干键值对。
1.2:TCP和UDP:
TCP/IP的传输层是网络中承上启下的关键一层,向上对应用层提供服务,向下将应用信息封装为网络信息。传输层连接主机之间的进程,同一主机中不同进程的网络通信端口进行区分,所以传输层为主机提供的是端口到端口的服务
。
1.端口:
-
这里所说的端口,不是计算机硬件I/O端口,而是软件级概念。就像IP地址是网络层的寻址方式,端口是传输层的寻址方式。端口是一个16位二进制数表达的正整数,数字范围为0~65535。
-
注意:TCP和UDP可以在同一主机上使用相同的端口而互不干扰。例如TCP有一个66号端口,UDP也可以有一个66号端口,两者并不冲突。
-
Internet标准应用层协议默认端口使用:
端口号 传输层协议 应用层协议 解释 80 TCP HTTP 互联网应用最广泛一种网络协议 21 TCP FTP FTP的传输效率非常高,所以在网络上传输打的文件时,一般也采用该协议 23 TCP TELNET 互联网远程登录服务的标准协议和主要方式 443 TCP HTTPS 提供加密和通过安全端口传输的另一种HTTP。对一些安全较高的网站,如银行,证券等 69 UDP TFTP 简单文件传输协议,主要用于轻量级设备启动时从网络下载启动代码 22 TCP SSH SSH是目前较可靠、专为远程登录会话和其他网络服务提供安全性的协议,利用SSH协议可以有效防止远程管理过程中信息泄露问题 25 TCP SMTP 简单邮件传输协议,它是一组用于从源地址到目的地址传送邮件的规则 7001 TCP HTTP 网络服务器WebLogic的默认端口 9080 TCP HTTP 网络服务器WebSphere的默认端口 8080 TCP HTTP 很多开源网络服务器的默认端口,例如:Tomcat等 5432 TCP Postgres PostgreSQL数据库的默认连接端口 1521 TCP Oracle Oracle数据库的默认连接端口 1080 UDP QQ 腾讯QQ软件的默认通信端口
2.TCP:
-
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠、基于字节流的传输层通信协议
。 -
TCP的特性如下:
有序性:为每个数据包编排序号,使接收端能够判断先后到达的次序混乱的数据包原本顺序。
正确性:TCP用一个checksum函数来检验数据是否有错误,在发送和接收时都要计算校验和,这是的接收端能够判断数据是否在传输过程中被破坏。
可靠性:发送端采用超时重传并有确认机制识别错误或丢失数据,进行重发。
可控性:接收端和发送端的网络质量通常不同,TCP采用滑动窗口协议和拥塞控制算法使用数据的发送速度达到合理值。
-
TCP采用面向连接的方式收发数据,在收发数据之前需要先建立连接,在数据传输之后释放连接,如图所示:
建立连接的三次握手过程如下: -
建立连接时,客户端发送SYN包到服务器,并进入SYN_SENT状态,等待服务器确认。
-
服务器收到SYN包,反馈给客户端一个SYN+ACK包,此时服务器进入SYN_RECV状态。
-
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,客户端和服务器同时进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
建立连接后双发相互发送消息。
消息完成后可由任意一方发送关闭连接请求,关闭连接的过程如下:
- 关闭请求方(比如客户端)向另一方发送(比如服务器)一个带有FIN附加标记的报文段。
- 服务器收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接,使应用程序做相应的清理工作。
- 服务器的应用程序清理工作完成后,向客户端发送一个FIN报文段。
- 客户端收到这个FIN报文段后,向服务器发送一个ACK,表示连接彻底释放。
3.UDP:
-
UDP(User Datagram Protocol)是一种无连接的传输层协议,提供面向事务的简单的不可靠信息传送服务
。 -
UDP的特性如下:
1.数据可以随时发送、接收、没用建立、断开连接的过程,因此主机不需要维护复杂的连接状态。
2.UDP不保证数据的可靠传输,仅仅尽最大可能进行发送。
3.没有拥塞控制算法控制收发速率,程序需在应用层自行控制。
4.发送方的UDP对应用程序交付的报文,在添加首部后向下交付给IP层。既不拆分,也不合并。因此,应用程序需要选择合适的报文大小。
-
UDP协议适用应用场景:
吞吐量大(因为只做轻量级控制)、可以承受信息丢失(因为传输不可靠)。在网络状况良好的情况下,UDP的丢包率在实际情况下也非常少,所以仍有很多经典协议采用UDP进行传输,比如SNMP、NFS、DNS、BOOTP等。