网络编程概述
网络编程定义
就是用来实现网络互通的不同计算机运行程序之间进行数据的交互的编程
网络中数据传送模型
上图中首先在发送放会通过OSI七层模型将数据层层封装一直到物理层封装成01的二进制数据(遵从相关协议)
然后发送给接收方,接收方接收数据后会通过OSI七层模型进行层层的解封装(遵从相关协议)
然后到应用层真实的数据。所以整个过程是一个倒置的梯形。
网络通信的三要素
IP地址
这个就不多说了
端口号
用来标识进程的逻辑地址,不同的进程端口不同
可以理解为每个应用程序的表示 在window用 命令 netstat -ano进行查看
通过IP地址+端口号可以唯一确定一台机器的应用程序
通信协议
通信双方所遵从的传输规则。
常见的两种传输协议
常见的有两种协议
TCP协议和UDP协议
UDP:
将数据源和目的地封装到数据包中,不需要建立连接。每个数据包的大小限制在64k.因为不建立连接,所以安全性差,速度快
其实和现实生活中邮寄东西很类似只需要在包裹上写好地址即可,在网络上只需要把要传输的数据和目的封装成一个包,放到网络上就会自动发送到目的地,数据包大小限制在64k
缺点是如果网络不稳定会发生丢包的可能性
TCP:
建立的连接形成传输数据的通道,然后再传输数据,通过三次握手。安全性高,效率低
TCP连接的三次握手和四次挥手
三次握手(我握你 ,你握我,我握你)
TCP连接类似给人家东西需要敲门,UDP类似于给人家东西不需要敲门
第一次:我要敲门,发送一个标志(我可以进来给你xx吗)
第二次:如果里面的人确认我可以进来则发送一个标志(请进)
第三次:我进门给里面的人给需要给的东西
四次挥手(给完东西说Bye Bye)
第一次:我发送一个标志(bye bye)
第二次:里面的人收到我的bye bye
第三次:里面的人发送bye bye给我
第四次:我收到里面人的bye bye 走人了
为啥是四次而不是三次是因为第二次的时候,里面的人需要仔细确认我发送的bye bye是否正常,
由于TCP协议存在三次握手和四次挥手所以在速度上大大减慢,但是在安全上提升很多。UDP不存在三次握手和四次挥手所以在速度上很快,所以TCP和UDP的本质区别就是TCP需要三次握手和四次挥手
连接池概述(澡堂概述)
- 默认连接数 initialSize(默认澡堂有多少员工)
- 最大员工数 maxActive(澡堂最多有多少员工)
- 最大空闲数 maxIdle(最多多少人闲着因为不能都闲着不然谁干活)
- 最小空闲数 minIdle(最少必须多少人要闲着,不能都忙,不然客人来了没人干活)
- 最大等待时间 maxWait(客人来了最多等待多少时间)