个人简介

Echo Blog


江湖无名 安心练剑
  • OSI 协议和 TCP/IP 协议
    互联网协议入门 互联网协议入门(一) 互联网协议入门(一) 二者的对应关系 OSI七层模型 TCP/IP 四层模型 对应网络协议 应用层(Application) 应用层 HTTP协议(超文本传输协议)、FTP协议(文件传输协议)、TFTP协议(简单文件传输协议)...
    2018-09-25 03:00:13 | Protocol
  • Java Net-10-多线程服务器
    多线程服务 由于Java的内置多线程功能,多线程服务器相当容易实现。但并不是所有的服务器设计都是一样的。 本文将介绍不同的服务器设计,并讨论它们的优缺点。 在Java中多线程服务器上的这种跟踪仍在进行中。 单线程 本文将展示如何在Java中实现单线程服务器。单线程服务器不是服务器的最佳设计,但是代码很好地说明了服务器的生命周期。多线程服务器上的以下文本将构建在这个代码模板上。 代...
    2018-09-25 01:13:42 | Java
  • Java Net-09-Frame
    Frame 程序间达成的某种包含了信息交换的形式和意义的共识称为协议,用来实现特定应用程序的协议叫做应用程序协议。 大部分应用程序协议是根据由字段序列组成的离散信息定义的,其中每个字段中都包含了一段以位序列编码(即二进制字节编码,也可以使用基于文本编码的方式,但常用协议如:TCP、UDP、HTTP 等在传输数据时,都是以位序列编码的)的特定信息。 应用程序协议中明确定义了信息的发送者应...
    2018-09-23 01:35:05 | Java
  • Java Net-08-URL
    URLConnection 创建连接 在java.net包中包含两个有趣的类:URL类和URLConnection类。 这两个类可以用来创建客户端到web服务器(HTTP服务器)的连接。 @Test public void getTest() throws IOException { URL url = new URL("https://www.baidu.com/"); ...
    2018-09-23 01:35:05 | Java
  • Java Net-07-UDP Socket
    UDP 协议 UDP 协议提供的服务不同于 TCP 协议的端到端服务,它是面向非连接的,属不可靠协议,UDP 套接字在使用前不需要进行连接。 际上,UDP 协议只实现了两个功能: 在 IP 协议的基础上添加了端口; 对传输过程中可能产生的数据错误进行了检测,并抛弃已经损坏的数据。 java 支持 Java 通过 DatagramPack...
    2018-09-23 01:35:05 | Java
  • Java Net-05-死锁
    基础原理 首先需要明白数据传输的底层实现机制,在上一章中有详细的介绍,我们提到了 SendQ 和 RecvQ 缓冲队列,这两个缓冲区的容量在具体实现时会受一定的限制,虽然它们使用的实际内存大小会动态地增长和收缩,但还是需要一个硬性的限制,以防止行为异常的程序所控制的单一 TCP 连接将系统的内存全部消耗。 正是由于缓冲区的容量有限,它们可能会被填满,事实也正是如此,如果与 TCP 的流量...
    2018-09-23 01:35:05 | Java
  • Java Net-05-TCP Socket 底层原理与生命周期
    数据传输的底层实现 数据结构 如果不理解套接字的具体实现所关联的数据结构和底层协议的工作细节,就很难抓住网络编程的精妙之处,对于 TCP 套接字来说,更是如此。 套接字所关联的底层的数据结构集包含了特定 Socket 实例所关联的信息。 比附,套接字结构除其他信息外还包含: 该套接字所关联的本地和远程互联网地址和端口号。 一个 FIFO(Firs...
    2018-09-23 01:35:05 | Java
  • Java Net-04-TCP Socket NIO 方式实现
    TCP Socket NIO 基础知识 NIO 采取通道(Channel)和缓冲区(Buffer)来传输和保存数据,它是非阻塞式的 I/O,即在等待连接、读写数据(这些都是在一线程以客户端的程序中会阻塞线程的操作)的时候,程序也可以做其他事情,以实现线程的异步操作。 考虑一个即时消息服务器,可能有上千个客户端同时连接到服务器,但是在任何时刻只有非常少量的消息需要读取和分发(如果采用线程...
    2018-09-23 01:35:05 | Java