Socket知识点总结

计算机网络分层

计算机网络分为五层:物理层、数据链路层、网络层、传输层、应用层。
其中:网络层:负责根据IP找到目的地址的主机。传输层:通过端口把数据传到目的主机的目的进程,来实现进程与进程之间的通信。

C/S结构

定义:即客户端/服务器结构,是软件系统体系结构
作用:充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。Socket正是使用这种结构建立连接的,一个套接字接客户端,一个套接字接服务器。

Socket的使用类型主要有两种:

流套接字(streamsocket) :基于 TCP协议,采用 流的方式 提供可靠的字节流服务
数据报套接字(datagramsocket):基于 UDP协议,采用 数据报文 提供数据打包发送的服务

TCP协议

定义:Transmission Control Protocol,即传输控制协议,是一种传输层通信协议。三次握手的目的是为了防止服务器端因为接收了早已失效的连接请求报文从而一直等待客户端请求,从而浪费资源。

特点:面向连接、面向字节流、全双工通信、可靠.

①面向连接:指的是要使用TCP传输数据,必须先建立TCP连接,传输完成后释放连接,就像打电话一样必须先拨号建立一条连接,打完后挂机释放连接。

②全双工通信:即一旦建立了TCP连接,通信双方可以在任何时候都能发送数据。

③可靠的:指的是通过TCP连接传送的数据,无差错,不丢失,不重复,并且按序到达。

④面向字节流:流,指的是流入到进程或从进程流出的字符序列。简单来说,虽然有时候要传输的数据流太大,TCP报文长度有限制,不能一次传输完,要把它分为好几个数据块,但是由于可靠性保证,接收方可以按顺序接收数据块然后重新组成分块之前的数据流,所以TCP看起来就像直接互相传输字节流一样,面向字节流。

UDP协议

定义:User Datagram Protocol,即用户数据报协议,是一种传输层通信协议。

特点:无连接的、不可靠的、面向报文、没有拥塞控制.

无连接的:和TCP要建立连接不同,UDP传输数据不需要建立连接,就像写信,在信封写上收信人名称、地址就可以交给邮局发送了,至于能不能送到,就要看邮局的送信能力和送信过程的困难程度了。

不可靠的:因为UDP发出去的数据包发出去就不管了,不管它会不会到达,所以很可能会出现丢包现象,使传输的数据出错。

面向报文:数据报文,就相当于一个数据包,应用层交给UDP多大的数据包,UDP就照样发送,不会像TCP那样拆分。

没有拥塞控制:拥塞,是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象,就像交通堵塞一样。TCP建立连接后如果发送的数据因为信道质量的原因不能到达目的地,它会不断重发,有可能导致越来越塞,所以需要一个复杂的原理来控制拥塞。而UDP就没有这个烦恼,发出去就不管了。

UDP协议应用场景

很多的实时应用(如IP电话、实时视频会议、某些多人同时在线游戏等)要求源主机以很定的速率发送数据,并且允许在网络发生拥塞时候丢失一些数据,但是要求不能有太大的延时,UDP就刚好适合这种要求。所以说,只有不适合的技术,没有真正没用的技术。

Socket 与 Http 对比

  1. 工作性质不同。Socket属于传输层,因为 TCP / IP协议属于传输层,解决的是数据如何在网络中传输的问题。而HTTP协议 属于 应用层,解决的是数据如何包装的问题

  2. 工作方式不同。Http:采用 请求-响应 方式即建立网络连接后,当 客户端 向 服务器 发送请求后,服务器端才能向客户端返回数据。可理解为:是客户端有需要才进行通信。而Socket:采用 服务器主动发送数据 的方式即建立网络连接后,服务器可主动发送消息给客户端,而不需要由客户端向服务器发送请求可理解为:是服务器端有需要才进行通信。

Hawky wechat
欢迎订阅我的微信公众号
坚持原创技术分享,您的支持将鼓励我继续创作!

分享