SOCKET原理
xinjing_wangtao
这个作者很懒,什么都没留下…
展开
-
基本套接字TCP和UDP (A)
http://blog.csdn.net/jiaomingliang/article/details/45529153 TCP的Java支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议、TCP协议和UDP协议。现在TCP/IP协议族中的主要socket类型为流套转载 2016-09-09 10:28:03 · 507 阅读 · 0 评论 -
TCP三次握手及关闭时的2MSL分析 (A)
TCP/IP三次握手四次挥手,是非常重要的,这个链接与关闭过程也是很简单的,但为什么是三次握手?以及为什么要等待2MSL的状态?大部分人也许听到这个问题就蒙了,这篇博客就综合《TCP/IP详解:卷一》来分析一下原因: 下面看TCP三次握手四次挥手的原理图: 1.为什么要三次握手? 为了避免已失效的连接报文段又到达可服务器。考虑这样一个正常的情况: 假设TCP转载 2016-09-09 10:36:31 · 308 阅读 · 0 评论 -
高性能网络编程(3)----TCP消息的接收 (B)
这篇文章将试图说明应用程序如何接收网络上发送过来的TCP消息流,由于篇幅所限,暂时忽略ACK报文的回复和接收窗口的滑动。 为了快速掌握本文所要表达的思想,我们可以带着以下问题阅读: 1、应用程序调用read、recv等方法时,socket套接字可以设置为阻塞或者非阻塞,这两种方式是如何工作的? 2、若socket为默认的阻塞套接字,此时recv方法传入的len参数,是表示必须超时(S转载 2016-09-09 17:30:51 · 512 阅读 · 0 评论 -
高性能网络编程(4)--TCP连接的关闭 (B)
TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。 为方便阅读,我们可以带着以下5个问题来阅读本文: 1、当socket被多进程或者多线程共享时,关闭连接时有何区别? 2、关连接时,若连接上有来自对端的还未处理的消息,会怎么处理? 3、关连接时,若连接上有本进程待发送却未来得及发送出的消息,又会怎么处理? 4、so_linger这转载 2016-09-09 17:32:54 · 551 阅读 · 0 评论 -
高性能网络编程(7)--tcp连接的内存使用 (B)
当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣。socket编程方法提供了SO_SNDBUF、SO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉,如下(sysctl -a命令可以查看这些配置): [cpp转载 2016-09-09 17:36:44 · 386 阅读 · 0 评论 -
高性能网络编程(6)--reactor反应堆与定时器管理 (B)
反应堆开发模型被绝大多数高性能服务器所选择,上一篇所介绍的IO多路复用是它的实现基础。定时触发功能通常是服务器必备组件,反应堆模型往往还不得不将定时器的管理囊括在内。本篇将介绍反应堆模型的特点和用法。 首先我们要谈谈,网络编程界为什么需要反应堆?有了IO复用,有了epoll,我们已经可以使服务器并发几十万连接的同时,维持高TPS了,难道这还不够吗? 我的答案是,技术层面足够了,转载 2016-09-09 17:35:17 · 322 阅读 · 0 评论 -
高性能网络编程(5)--IO复用与并发编程 (B)
对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接上的报文,与此同时,可能服务器上还有数以十万计的最近几秒没有收发任何报文的相对不活跃连接。同时处理多个并行发生事件的连接,简称为并发;同时处理万计、十万计的连接,则是高并发。服务器的并发编程所追求的就是处理的并发连接数目无限大,同时维持着高效率使用CPU等资源,直至物理资源首先耗尽。转载 2016-09-09 17:34:02 · 333 阅读 · 0 评论 -
高性能网络编程(1)----accept建立连接 (B)
http://blog.csdn.net/russell_tao/article/details/9111769 最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它。 编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项转载 2016-09-09 17:26:16 · 358 阅读 · 0 评论 -
JAVA Socket 底层是怎样基于TCP/IP 实现的
首先必须明确:TCP/IP模型中有四层结构: 应用层(Application Layer)、传输层(Transport Layer)、网络层(Internet Layer )、链路层(LinkLayer) 其中Ip协议(Internet Protocol)是位于网络层的,TCP协议时位于传输层的。通过Ip协议可以使可以使两台计算机使用同一种语言,从而允许Interne转载 2016-09-09 10:45:01 · 2575 阅读 · 1 评论 -
java NIO、BIO、AIO全面剖析 (A)
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号 问题 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步非阻塞? 7 什么是异步阻塞? 8 什么是异步非阻塞? 散仙转载 2016-09-09 10:35:15 · 232 阅读 · 0 评论 -
javaNIO原理(含代码)及与 同步阻塞IO 、伪异步IO比较 (A)
一.同步阻塞IO BIO就是阻塞式的IO,网络通信中对于多客户端的连入,服务器端总是与客户端数量一致的线程去处理每个客户端任务,即,客户端与线程数1:1,并且进行读写操作室阻塞的,当有你成千上完的客户端进行连接,就导致服务器不断的建立新的线程,最后导致低通资源不足,后面的客户端不能连接服务器,并且连接入的客户端并不是总是在于服务器进行交互,很可能就只是占用着资源而已。转载 2016-09-09 10:34:20 · 354 阅读 · 0 评论 -
揭秘Socket与底层数据传输实现(A)
揭秘socket 什么是socket?socket字面意思其实就是一个插口或者套接字,包含了源ip地址、源端口、目的ip地址和源端口。但是socket在那个位置呢 ,在TCP/IP网络的四层体系和OSI七层好像都找不到他的影子,那么下面看一张图就可以明白了。 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Sock转载 2016-09-09 10:32:42 · 682 阅读 · 0 评论 -
socket的底层创建与关闭 (A)
看了网络编程的的东西,并且做了一个QQ的项目。socket编程也算是入门了,但是只是会用还是不行的,必须了解底层的实现,这篇博客就把底层的实现总结一遍。网络传输都是通过底层的TCP协议实现的,这个协议真的是很庞大,想要了解TCP的协议内容可以看一下《TCP/IP:卷一》的TCP部分,写的真是相当的经典,这里就不对TCP协议做过多的说明了,后续肯定会加上的。 Socket的创转载 2016-09-09 10:29:59 · 491 阅读 · 0 评论 -
高性能网络编程(2)----TCP消息的发送 (B)
在上一篇中,我们已经建立好的TCP连接,对应着操作系统分配的1个套接字。操作TCP协议发送数据时,面对的是数据流。通常调用诸如send或者write方法来发送数据到另一台主机,那么,调用这样的方法时,在操作系统内核中发生了什么事情呢?我们带着以下3个问题来细细分析:发送方法成功返回时,能保证TCP另一端的主机接收到吗?能保证数据已经发送到网络上了吗?套接字为阻塞或者非阻塞时,发送方法做的事转载 2016-09-09 17:27:41 · 541 阅读 · 0 评论