传输层协议
传输层协议有tcp和udp,UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境;TCP因为要经过三次“对话”,传输可靠,适用于传输大文件,速度比UDP慢。
socket分别实现了这两种协议,在java中,class Socket实现了tcp协议,class DatagramSocket实现了udp协议,当调用了socket或者datagramSocket的send方法时,底层会为传入的数据加上tcp或者udp的协议头,然后放入物理层进行传输
应用层协议
应用层协议很多,http协议属于应用层协议,是基于tcp传输层协议的。java中apache的httpClient实现了http协议,在调用httpClient的发送请求方法时,httpClient会在我们传入的数据前加上http协议头,最终通过socket来发送请求,socket会再把请求加上tcp协议头,通过物理链路进行传输
对rpc框架而言,如thrift框架,在发送请求前,会将请求按照thrift协议进行包装,最终同样调用socket来发送请求,这里thrift协议也属于应用层协议
数据->应用层协议包装(http/thrift)->传输层协议包装(tcp/udp)->物理链路传输
- 应用层协议包装是由httpClient,thrift框架做的
- 传输层协议包装是由socket,datagramSocket做的