首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

了解TCP服务

TCP是什么呢? TCP全名为传输控制协议,在OSI模型(由七层组成,分别为物理层、数据链结层、网络层、传输层、会话层、表示层、应用层)中属于传输层协议。...许多应用层协议基于TCP构建,典型的是HTTP、SMTP、IMAP等协议。 ---- 为什么要分层?...应用层(Application) 提供网络与用户应用软件之间的接口服务(HTTP) 表示层(Presentation) 提供格式化的表示和转换数据服务,如加密和压缩 会话层(Session) 提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制...为了准确无误地将数据送达目标处,TCP 协议采用了三次握手策略。用TCP 协议把数据包送出去后,TCP 不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。...握手过程中使用了 TCP 的标志SYN 和ACK。 发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。

71860
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Netty搭建TCP服务器实践

    在netty基本组件介绍中,我们大致了解了netty的一些基本组件,今天我们来搭建一个基于netty的Tcp服务端程序,通过代码来了解和熟悉这些组件的功能和使用方法。...服务启动 成功---------------");         }     }     /**     * 服务启动     */     public synchronized void...服务已经停止...");     }     private String getName() {         return "TCP-Server";     } } 上面的代码中主要使用到的...通过以上的代码我们可以看到,一个基于netty的TCP服务的搭建基本就是三大块: 1、对引导服务器类ServerBootstrap的初始化; 2、对ChannelPipeline的定义,也就是把多个ChannelHandler...组成一条任务链; 3、对 ChannelHandler的具体实现,其中可以有编解码器,可以有对收发数据的业务处理逻辑; 以上代码只是在基于netty框架搭建一个最基本的TCP服务,其中包含了一些netty

    2K20

    【Swoole系列2.2】Http、TCP、UDP服务

    Http、TCP、UDP服务 其实在上篇文章中,我们就已经运行起来了一个 Http 服务,也简单地说明了一下使用 Swoole 运行起来的服务与普通的 PHP 开发有什么区别。...因此,今天我们将继续再深入的讲一下 Http 相关的内容以及了解一下 TCP、UDP 服务在 Swoole 中如何运行。 Http 我们还是看看上次的 Http 服务的代码。...(29) "2.2Http、TCP、UDP服务.php" ["PATH_TRANSLATED"]=> string(29) "2.2Http、TCP、UDP服务.php" ["DOCUMENT_ROOT...接下来,大家一起继续学习了解一下使用 Swoole 来搭建一个 TCP 服务端。 只要是学习过一点网络相关知识的同学肯定都知道,我们的 Http 服务本身就是建立在 TCP 的基础之上的。...因此,其实要建立 TCP 服务的基本步骤和 Http 服务是没啥差别的。最主要的就是监听的内容不同。

    48920

    平滑重启你的后台TCP服务

    后台业务一般都是通过TCP协议提供服务服务难免需要版本升级,需要经历旧进程的退出和新进程的启动。为保证用户链接不异常中断,需要旧进程继续运行,直至处理完用户请求后再退出。...让我们先暂时搁置平滑重启的实现,详细看下linux下TCP连接建立过程中的交互,以及其中的维护的两个队列: 半连接队列:也叫syn队列,服务端收到客户端发起的syn请求后,内核会把该连接存储到半连接队列...,并向客户端回复syn+ack; 全连接队列:也叫accept队列;客户端收到服务端的syn+ack后,会向服务端回复ack,完成3次握手后,tcp连接就建立了。...[半连接与全连接队列, 图片来自小林coding博客] 通过上述分析可知,linux下每一个服务端的套接字都维护一个全连接队列和半连接队列。TCP的握手流程是由linux内核协议栈异步完成的。...总结 TCP后台服务难免需要升级更新,需要具备平滑重启能力,才能让服务升级对用户无感知。

    2.4K10

    tcp服务下的数据传递

    go中实现一个tcp服务,首先是要监听端口,接收请求,这个地方会被阻塞等待 当客户端连接过来,会开一个grountine去处理这条客户端的tcp连接,因此可以同时处理多条连接 在连接中,要循环的去读取客户端传递过来的数据...所以我收到的这一个字节切片的数据tmpByte[0]为10的时候就断掉 可以通过下面代码的运行看一下收取到的数据,客户端传递一个英文字符,和传递一个中文字符所收取到的具体数据,参照ascii对照表 客户端传递:a 服务端收到...一个字节,ascii编码为97,对应 a 1 [13] 一个字节,ascii编码为13,对应 控制字符CR,归位键 1 [10] 一个字节,ascii编码为10,对应 控制字符LF,换行键 客户端传递:你 服务端收到...package main import ( "fmt" "net" ) func main() { //监听端口 listener, _ := net.Listen("tcp

    62820

    Go Web---tcp服务

    Go Web---tcp服务tcp 服务器 优化版本 ---- tcp 服务器 这部分我们将使用 TCP 协议和之前讲到的协程范式编写一个简单的客户端-服务器应用,一个(web)服务器应用需要响应众多客户端的并发请求...如果在服务器没有开始监听的情况下运行客户端程序,客户端会停止并打印出以下错误信息:对tcp 127.0.0.1:50000发起连接时产生错误:由于目标计算机的积极拒绝而无法创建连接。...从很多方面优化了第一个tcp服务器的示例 server.go 并且拥有更好的结构,它只用了 80 行代码!...在命令行中输入 simple_tcp_server localhost 50000 来启动服务器程序,然后在独立的命令行窗口启动一些 client.go 的客户端。...当有两个客户端连接的情况下服务器的典型输出如下,这里我们可以看到每个客户端都有自己的地址: E:\Go\GoBoek\code examples\chapter 14>simple_tcp_server

    1.7K30

    多进程TCP并发服务

    多进程TCP并发服务器 最初的服务器都是迭代服务器,服务器处理完一个客户的请求,再接受下一个客户的请求。但是我们的期望应该是一台服务器同时为多个客户服务。...实现并发服务器最简单的办法就是为每个客户均fork一个子进程。...基本思路 基本流程是,建立连接,accept返回后,服务器调用fork,子进程通过已连接套接口(connfd)为客户提供服务,父进程通过监听套接口(listenfd)等待另一个连接。...exit(0); /* 子进程结束 */ } close(connfd); /* 父进程关闭已连接套接口 */ } 描述字访问计数 对TCP...[accept返回后客户-服务器的状态] 并发服务器的下一步是调用fork,下图是从fork返回后的状态。此时描述字listenfd和connfd是父进程-子进程共享的。

    5.9K90
    领券