Java网络编程系列
lhrimperial
做到不留余力
展开
-
TCP/IP简单理解
TCP/IP协议簇应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等传输层:TCP,UDP网络层:IP,ICMP,OSPF,EIGRP,IGMP数据链路层:SLIP,CSLIP,PPP,MTU每一抽象层建立在低一层提供的服务上,并且为高一层提供服务,看起来大概是这样子的 首先来看看在网络中,一帧以太网数据包的格式: 在Linux 操作系...原创 2018-09-04 13:36:31 · 955 阅读 · 0 评论 -
Socket 编程原理
socket简介IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。 socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种”打开—读...原创 2018-09-04 16:08:20 · 622 阅读 · 0 评论 -
Java Socket编程及源码解析
Java Socket示例ServerSocketpublic class BioServer { private int port; private ExecutorService service = Executors.newFixedThreadPool(3); public BioServer(int port) { this.port...原创 2018-09-04 16:47:42 · 6220 阅读 · 1 评论 -
IO原理理解与IO模型
基本概念Linux内核将所有外部设备都看做一个文件来操作。那么我们对与外部设备的操作都可以看做是对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符),对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)。描述符就是一个数字(可以理解为一个索引),指向内核中一个结构体(文件路径...原创 2018-09-05 11:16:54 · 6708 阅读 · 0 评论 -
Java NIO原理与简单实现
Java NIO 简介JAVA NIO有两种解释:一种叫非阻塞IO(Non-blocking I/O),另一种也叫新的IO(New I/O),其实是同一个概念。它是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。NIO是一种基于通道和缓冲区的I/O方式,它可以使用Native函数库直接分配堆外内...原创 2018-09-05 16:52:36 · 47072 阅读 · 16 评论 -
NIO Buffer、Channel、Selector分析
Bufferpublic abstract class Buffer { ... // Invariants: mark <= position <= limit <= capacity private int mark = -1; private int position = 0; private int limi...原创 2018-09-06 14:52:12 · 243 阅读 · 0 评论 -
TCP粘包、拆包与通信协议
在TCP编程中,通常Sever端与Client通信时的消息都有着固定的消息格式,称之为协议(protocol),例如FTP协议、Telnet协议等,有的公司也会自己开发协议。那么协议到底是干什么的呢?说白了,协议了就是定义了数据通信的格式。主要是为了解决TCP编程中的粘包和半包问题。由于TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供...原创 2018-09-13 12:44:53 · 3169 阅读 · 0 评论