网络编程知识总结

网络编程简述

网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据,中间传输为物理线路的作用。

网络通信要素

IP地址(InetAddress)

特点:
网络中的设备标识。
不易记忆,但是可用主机名。
本地回环地址127.0.0.1 主机名localhost。

端口号

数据要发送到对方指定的应用程序上,为了标识这些应用程序,给这些网络应用程序都用数字进行标识。为了方便称呼这个数字,把它称为端口,是逻辑端口。
特点:
用于标识进程的逻辑地址。
有效端口号:0—65535,其中0—1024系统使用或保留端口。

传输协议

传输协议:通讯的规则。

TCP(传输控制协议)方式

TCP方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据
特点:
建立连接,形成传输数据的通道。
在连接中可以进行大数据传输。
通过三次握手完成连接,是可靠协议
必须建立连接,效率和降低。

UDP(用户数据报协议)方式

UDP方式就类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得
特点:
将数据及源和目的封装在数据包中,不需要建立连接
每个数据报的大小限制在64K内。
不需要建立连接,速度快。
因无连接,是不可靠协议。

这两种传输方式都是实际的网络编程中进行使用,重要的数据一般使用TCP方式进行数据传输,而大量的非核心数据则都通过UDP方式进行传递,在一些程序中甚至结合使用这两种方式进行数据的传递。由于TCP需要建立专用的虚拟连接以及确认传输是否正确,所以使用TCP方式的速度稍微慢一些,而且传输时产生的数据量要比UDP稍微大一些。

UDP和TCP协议的区别

​ 使用UDP时,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。

​ 对于TCP协议,由于它是一个面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中多了一个连接建立的时间 。

​ 使用UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。

​ TCP没有这方面的限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大量的数据。

​ UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。

​ TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据 。

​ TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输。

​ 相比之下UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序 。

网络模型

​ 1.OSI参考模型 2.TCP/IP参考模型

模型参考图

Socket

特点:
​ Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
​ Socket就是为网络服务提供的一种机制。
​ 通信的两端都有Socket。
​ 网络通信其实就是Socket之间的通信。
​ 数据在两个Socket之间通过IO传输。

HTTP 和 WebSocket的区别

  1. http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要有三次握手才能发送信息。

  http链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息。即每一个request对应一个response。长链接是在一定的期限内保持链接。保持TCP连接不断开。客户端与服务器通信,必须要有客户端发起然后服务器返回结果。客户端是主动的,服务器是被动的。

  1. WebSocket他是为了解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮训问题而生的,他实现了多路复用,他是全双工通信。在webSocket协议下客服端和浏览器可以同时发送信息。

  建立了WebSocket之后服务器不必在浏览器发送request请求之后才能发送信息到浏览器。这时的服务器已有主动权想什么时候发就可以发送信息到服务器。而且信息当中不必在带有head的部分信息了与http的长链接通信来说,这种方式,不仅能降低服务器的压力。而且信息当中也减少了部分多余的信息。