网络编程总结
什么是网络编程?
网络编程从大的方面就是说对信息的发送接收。
通过操作相应API调度计算机资源硬件,并且利用管道(网线)进行数据交互的过程。
更为具体的涉及:网络模型、套接字、数据包
**所谓socket通常也称作"套接字",用于描述IP地址和端口,**是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接字来进行分离。
套接字就像是传输层为应用层开的一个小口,应用程序通过这个小口向远程发送数据,或者接收远程发来的数据;而这个小口以内,也就是数据进入这个口之后,或者数据从这个口出来之前,是不知道也不需要知道的,也不会关心它如何传输,这属于网络其它层次的工作。
Socket实际是传输层供给应用层的编程接口。传输层则在网络层的基础上提供进程到进程问的逻辑通道,而应用层的进程则利用传输层向另一台主机的某一进程通信。Socket就是应用层与传输层之间的桥梁
使用Socket编程可以开发客户机和服务器应用程序,可以在本地网络上进行通信,也可通过Internet在全球范围内通信。
网络编程的目的:
直接或间接地通过网络协议与其他计算机实现数据交换,进行通讯。
网络编程中两个主要的问题:
准确定位网络上一台或多态主机(IP);定位主机上的特定应用程序(端口号,确定哪个应用程序进行通信的);
找到主机后如何可靠高效地进行数据传输。
网络通信要素
IP和端口号
192.168.开头的就是私有地址,范围为192.168.0.0-192.168.255.255.专门为组织机构内部使用。
IP地址分类:IPV4,IPV6;
公网地址,私有地址(局域网使用)
网络通信协议
-
OSI参考模型(7层)
-
TCP/IP参考模型(4层) 应用层http,ftp,传输层tcp,udp,网络层ip,物理+数据链路层
核心数据一层层封装,通过物理层传输数据,到另一边再一层层拆封,最后展现出需要的数据
因ip地址太抽象,不容易记忆,出现域名这一词,拿着域名请求资源,首先是先根据域名解析服务器把域名解析成ip地址,拿着ip找到对应的网络服务器请求资源(本机c盘有文件hosts,里面可以配置ip地址和对应的域名,没有的话,再通过DNS服务器,找主机)
TCP协议
使用tcp协议签,须先建立tcp连接,形成传输数据通道;
传输前,采用“三次握手”方式,点对点通信,是可靠的;
TCP协议进行通信的两个应用进程:客户端,服务端;
在连接中可进行大数量的传输;
传输完毕,需释放已建立的连接。
TCP建立连接, 即"三次握手"
1.客户端发送连接到服务器端, 等待服务器端确认
2.服务器端收到客户端的请求, 向客户端回复确认收到
3.客户端收到服务器的确认, 向服务器回复确认收到
TCP断开连接, 即"四次挥手"
1.客户端发起中断请求, 用来关闭客户端到服务器端的连接
2.服务器端收到中断请求, 并回复确认收到
3.服务器端发起中断请求, 用来关闭服务器到客户端的连接
4.客户端收到中断请求, 并回复确认收到