建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 先来看看如何建立连接的。 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建 ...
分类:
其他好文 时间:
2016-06-08 18:53:40
阅读次数:
160
TCP的握手挥手和状态转换是很多网络问题的基础。在此进行相关问题的讨论及记录。 首先,这幅图大致介绍了TCP连接和断开的过程: 注意其中的几个状态: LISTEN, SYN-SEND, SYN-RCVD, ESTABLISHED, FIN-WAIT-1, CLOSE-WAIT, FIN_WAIT-2 ...
分类:
其他好文 时间:
2016-06-07 19:12:04
阅读次数:
128
WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。 一开始的握手需要借助HTTP请求完成。 WebSocket是基于TCP来实现的: Wikipedia:https://en.wikipedia.org/wiki/WebSoc ...
分类:
Web程序 时间:
2016-06-06 00:53:30
阅读次数:
215
在java 1.6版本中,通过HttpsURLConnection请求class 1(多发生于免费ssl证书,比如沃通或者startssl的)的https网络地址时,可能会报握手异常: 可以做如下尝试: ...
分类:
其他好文 时间:
2016-05-31 14:02:42
阅读次数:
121
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: TCP头部: 其中 ACK SYN 序号 这三个部分在以下会用到,它们的介绍也在下面。 暂时需要的信息有: ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1 SYN(SYN ...
分类:
其他好文 时间:
2016-05-31 12:14:44
阅读次数:
182
关于TCP的三次握手,有很多朋友还在疑惑为什么是三次,而不是两次,LZ想了一下用一个例子来说明最好。 场景: 办公室有一名前台(服务器),若干业务员(fork出来的进程) 客户(客户端) 为什么我们说三次握手才是有保障的,才是稳定的,我们看一下,如果是一次握手: 客户(打电话给前台): 喂,你好! ...
分类:
其他好文 时间:
2016-05-31 00:56:05
阅读次数:
226
HandShake的流程图:
1:握手以客户端发送 C0 和 C1 块开始。
2:客户端必须等待接收到 S1 才能发送 C2。
3:客户端必须等待接收到 S2 才能发送任何其他数据。
4:服务器端必须等待接收到 C0 才能发送 S0 和 S1,也可以等待接收到 C1 再发送 S0 和 S1。服务器端必须等待接收到 C1 才能发送 S2。服务器端必须等待接收到 C2 才能发送任何其他数据。...
分类:
其他好文 时间:
2016-05-30 15:44:29
阅读次数:
215
前言今天加班回来,终于有时间继续更新NIO的文章了。在前一篇文章我们讲解了缓冲区的知识,并通过代码演示了如何使用缓冲区的API完成一些操作。这里要讲的通道于缓冲区关系密切,简单来说,缓冲区是填充数据的载体,而通道则可以理解为传输数据的载体。回忆在TCP/IP中建立握手的过程,发送端有一个发送缓冲区而接受端有一个接收缓冲区,进程从缓冲区中取数据,之后缓冲区又可以被填满,而传输数据的网络则可以理解为通道...
分类:
编程语言 时间:
2016-05-30 15:09:47
阅读次数:
153
注:主动、被动 与 服务器、客户端没有明确的对应关系。 这个图N多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻 的认识,不能只停留在一知半解之中。下面对这张图的11种状态详细解析一下,以便加强记忆!不过在这之 ...
分类:
其他好文 时间:
2016-05-30 10:15:23
阅读次数:
205
本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解。
1、BIO编程
1.1、传统的BIO编程
网络编程的基本模型是C/S模型,即两个进程间的通信。
服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连接,如果连接成功建立,双方就可以通过套接字进行通信。
传统的同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听端口;Socket负责发起连接操作。连接成功后,双方通过输入和输出流进行同步阻塞式通信。...
分类:
编程语言 时间:
2016-05-29 06:26:56
阅读次数:
644