TCP/IP
TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。
在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
在传输层中有TCP协议与UDP协议。
在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议
UDP包括DNS、TFTP等协议
短连接
连接->传输数据->关闭连接
HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。
长连接
连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。
长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。
http的长连接
HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP 1.1默认进行持久连接。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。
什么时候用长连接,短连接?
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。
总之,长连接和短连接的选择要视情况而定。
发送接收方式
1、异步
报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况:
(1)异步双工:接收和发送在同一个程序中,由两个不同的子进程分别负责发送和接收
(2)异步单工:接收和发送是用两个不同的程序来完成。
2、同步
报文发送和接收是同步进行,既报文发送后等待接收返回报文。 同步方式一般需要考虑超时问题,即报文发出去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读返回报文,直接通知超时返回。
在长连接中一般是没有条件能够判断读写什么时候结束,所以必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度去读相应长度的报文。
Socket是什么
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
1.最大TCP连接数 TcpNumConnections
2.TCP关闭延迟时间 TCPTimedWaitDelay (30-240)s
3.最大动态端口数 MaxUserPort (Default = 5000, Max = 65534) TCP客户端和服务器连接时,客户端必须分配一个动态端口,默认情况下这个动态端口的分配范围为 1024-5000 ,也就是说默认情况下,客户端最多可以同时发起3977 Socket 连接
4.最大TCB 数量 MaxFreeTcbs
系统为每个TCP 连接分配一个TCP 控制块(TCP control block or TCB),这个控制块用于缓存TCP连接的一些参数,每个TCB需要分配 0.5 KB的pagepool 和 0.5KB 的Non-pagepool,也就说,每个TCP连接会占用 1KB 的系统内存。
非Server版本,MaxFreeTcbs 的默认值为1000 (64M 以上物理内存)Server 版本,这个的默认值为 2000。也就是说,默认情况下,Server 版本最多同时可以建立并保持2000个TCP 连接。
5. 最大TCB Hash table 数量 MaxHashTableSize TCB 是通过Hash table 来管理的。
这个值指明分配 pagepool 内存的数量,也就是说,如果MaxFreeTcbs = 1000 , 则 pagepool 的内存数量为 500KB那么 MaxHashTableSize 应大于 500 才行。这个数量越大,则Hash table 的冗余度就越高,每次分配和查找 TCP 连接用时就越少。这个值必须是2的幂,且最大为65536.
IBM WebSphere Voice Server 在windows server 2003 下的典型配置
MaxUserPort = 65534 (Decimal)
MaxHashTableSize = 65536 (Decimal)
MaxFreeTcbs = 16000 (Decimal)
这里我们可以看到 MaxHashTableSize 被配置为比MaxFreeTcbs 大4倍,这样可以大大增加TCP建立的速度
相关推荐
HTTP 和 Socket 是两种常见的网络通信协议,它们各自有其特点和适用场景。下面将详细介绍这两个概念,以及它们之间的区别。 1. **TCP 连接**: - TCP(Transmission Control Protocol,传输控制协议)是一种面向...
而Socket则是一种更底层的通信机制,可以支持多种协议和服务,适用于需要更高灵活性和控制权的场景。在实际应用中,两者往往结合使用,HTTP用于处理Web请求,而Socket用于实现更复杂的网络通信需求。
2. **类型**:TCP Socket和UDP Socket,前者提供面向连接的服务,保证数据的有序和可靠传输;后者是无连接的,适合实时性要求高但数据完整性可以牺牲的场景。 3. **编程**:使用Java,可以调用Socket类和...
【MQTTnet-master (1)_HTTP_socketserver_socket_MQTTnet_httpserver_源】这个压缩包文件主要涉及了MQTT网络框架MQTTnet的一个高级应用,即通过HTTP和socket服务器来实现MQTT协议的订阅功能。以下是关于这些知识点的...
在IT行业中,网络通信是软件开发中的重要组成部分,TCP(传输控制协议)、HTTP(超文本传输协议)和Socket是构建网络应用的基础。本资源“深入解析TCP、HTTP、Socket、Socket连接池.rar”旨在帮助开发者深入理解这些...
HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的...如果你解压并运行这个程序,将能看到如何将理论知识转化为实际代码,从而加深对HTTP和Socket编程的理解。
Socket编程通常涉及到多个网络协议,其中最著名的有TCP/IP、HTTP和Socket本身。TCP/IP是互联网最基本的协议之一,它位于网络模型的传输层,负责传输数据。而HTTP协议则位于应用层,是基于TCP/IP实现的一种应用层协议...
在Java的网络编程中,`UrlConnection`和`Socket`是两种常见的网络连接方式,它们在处理HTTP请求和响应时有着不同的特性和应用场景。本文将深入探讨这两种连接方式的区别,并结合`HttpURLConnectionImpl.java`、`...
在 HTTP 和 Socket 连接中,TCP 连接是建立在网络之间的连接,而 Socket 是建立在 TCP 连接之上的接口。Socket 连接是在 TCP 连接的基础上,提供了一个发送消息的接口。 在 Socket 编程中,我们需要了解 Socket 的...
首先,SuperSocket是一个轻量级的Socket服务端框架,它支持多种通信协议,如自定义协议、HTTP、FTP等。它的设计目标是提供一个易于扩展的平台,让开发者可以专注于业务逻辑,而不必关心底层Socket通信的复杂性。 **...
最后,记得在完成通信后关闭Socket和相关的流对象,以释放系统资源: ```csharp reader.Close(); stream.Close(); clientSocket.Close(); ``` 在VS2008和Windows7环境下,你可以创建一个控制台应用程序项目,将...
在HTTP连接中使用Socket,我们可以更底层地控制HTTP请求和响应的过程,比如实现自定义的HTTP客户端或服务器。 首先,理解HTTP连接的基本流程是必要的。HTTP连接通常包含以下几个步骤:建立TCP连接、发送HTTP请求、...
我们可以使用Spring的`@ServerEndpoint`注解创建WebSocket服务,或者使用Netty、Undertow等嵌入式Web服务器来处理HTTP和Socket通信。 首先,我们需要定义一个数据解析类,用于解析GT06协议的数据包。数据包通常以...
在这个场景中,我们关注的是两种常见的通信方式:HTTP和Socket。这两种方法都是Java中实现客户端-服务器交互的重要手段。 1. **HTTP连接**: HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从...
例如,HTTP、FTP、TELNET 等协议都是基于流的 Socket。 * 基于数据报的 Socket:使用 UDP 协议,提供不可靠的、无序的、可能损失的数据传输。例如,DNS、SNMP 等协议都是基于数据报的 Socket。 C# 中的 Socket 编程...
在Android平台上,我们可以利用Socket编程来模拟一个简单的HTTP服务器,以提供本地文件系统中的资源,如HTML文件,供外部设备(如浏览器)访问。这个过程涉及到Android系统的网络权限管理、Socket编程以及HTTP协议的...
Socket允许程序员在不同的网络协议上发送和接收数据,包括TCP/IP、UDP等。使用Socket可以实现高效的网络通信,适用于实时性和可靠性要求高的应用场景。 HTTP/HTTPS请求 HTTP/HTTPS是两种常用的网络协议,分别用于...
网络编程在软件开发中扮演着至关重要的角色,其中两种常见的通信方式是HTTP和Socket通信。本文将深入探讨这两种通信方式,以及在Android开发中如何利用Java实现它们。 **HTTP通信** HTTP(超文本传输协议)是一种...
### Socket 实现 HTTP 代理服务器的关键知识点 ...综上所述,通过以上知识点的学习和理解,我们能够更好地掌握如何使用 Socket 实现一个基本的 HTTP 代理服务器,并且在这个过程中还需要深入理解 HTTP 协议的工作机制。