socket套接字编程:
socket是一套网络编程接口。类似于中间件。上层用户可以通过这些接口简单的完成网络通信传输。而不需要过于关心内部的实现过程。
套接字编程讲的就是使用socket接口实现网络通信。
socket编程:tcp/udp
传输层有两个协议:tcp/udp。这两个协议特性各有不同,因此实现流程也有差别。
-
udp:用户数据报协议。无连接,不可靠,面向数据报。
面向数据报:无连接的、不可靠的、无序的、有最大长度限制的数据传输服务。
应用场景:数据实时性大于安全性的场景–视频传输–发短信 -
tcp:传输控制协议。面向连接,可靠传输,面向字节流。
面向字节流:基于连接的、可靠的、有序的、双向的字节流传输服务、不限制上层传输数据大小的传输方式。
应用场景:数据安全性大于实时性的场景–文件传输–打电话
五元组
源IP地址、源端口、目的IP地址、目的端口、通信协议。
标识一条通信,每一条网络中的数据都会包含的信息。
网络通信
网络通信,是网络中的两端主机上的 进程之间的通信。这两端有个名称:客户端/服务器端
客户端:是主动发出请求的一方主机
服务器端:是被动接受请求的一方主机
永远都是客户端主机先向服务器端发送请求。
udp网络通信程序编程流程:
服务器socket只能绑定的是服务端主机上的IP地址。
客户端也绑定的是自己主机上的IP地址。
客户端永远都是主动发送数据的一方,意味着
客户端必须知道服务器的地址信息才可以在发送数据的时候,将数据能够层层数据封装完成。(网络传输的数据都应该包含:源IP地址、目的IP地址、源端口、目的端口、协议)
客户端所知道的服务端地址,都是服务器告诉它的–