协议篇
----------------------------------------------------------------------------------------------------------------------------------------
网络分层,3种分法,7层、5层,4层
OSI7层协议: 物理层;数据链路层;网络层;传输层;会话层;表示层;应用层
5层协议: 物理层;数据链路层;网络层;传输层; 应用层
TCP/IP4层协议: 物理链路层;网络层;传输层; 应用层
物理层(光缆、无线电波)
数据链路层(以太网)
网络层(IP协议)
传输层(TCP、UDP协议)
应用层(HTTP、FTP、SMTP、SSH等)
从上往下,数据每经过一层在数据包上加东西,从应用层到传输层加TCP首部,从传输层到网络层加IP首部,从网络层到链路层加以太网首部;到达传输端,从下往上,数据层层解套出来,每到一层删除一个首部。直到应用层就是HTTP数据了。
----------------------------------------------------------------------------------------------------------------------------------------
三次握手:
第一次,客户端向服务器发送数据包,等待服务器确认
第二次,服务器收到客户端的包,确认,并向客户端发送数据包
第三次,客户端收到服务器的包,向服务器发送确认包,3次握手完毕,可以传输数据了
----------------------------------------------------------------------------------------------------------------------------------------
IP、TCP、UDP、HTTP协议区别
TCP:稳定可靠,面向连接,客户与服务器交互数据前先建立连接,效率低,超时重发,收到包给反馈,适用于网页、邮件、文件传输
UDP:广播式传输数据,不可靠,不建连接,不保证到达目的地,效率高,适用于语音广播、视频等
网络层根据协议号选择提交给TCP还是UDP,传输层根据端口号选择提交给相应的应用程序
HTTP协议解决如何包装数据,建立在TCP协议之上,由TCP传输,无状态,请求数据先建连接再断连接,短连接
TCP、IP协议解决数据如何在网络中传输,IP像公路、TCP(UDP)像卡车、HTTP像货物
Socket,服务器主动向客户端发送数据
----------------------------------------------------------------------------------------------------------------------------------------
Socket:本身不是协议,是实现传输层协议(TCP或UDP)的一组编程API,处于传输层,或理解为介于应用层和传输层中间的抽象层。
----------------------------------------------------------------------------------------------------------------------------------------
Netty:
可以定制编解码协议,实现自己特定协议的服务器,如HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器等。
Netty是对NIO的封装,Accept连接和读写操作由不同的线程池处理
Netty解决了“粘包”(多个字符串粘在一起)、“半包”(一个字符串被拆开)以及原生JKD编程复杂问题
零拷贝:https://segmentfault.com/a/1190000017128263?utm_source=tag-newest
----------------------------------------------------------------------------------------------------------------------------------------