首页
学习
活动
专区
圈层
工具
发布

Linux网络编程TCP

TCP/IP协议 TCP/IP 协议栈是一系列网络协议(protocol)的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。...OSI 7层模型和TCP/IP四层网络模型对应关系 计算机网路基础的知识不过多讲解,主要是让大家明白接下来的Linux网络编程数据流属于那一层,具体如下图 TCP/IP协议数据流示意图 我们接下来讲解的...Linux网络编程Tcp协议是属于传输层的协议 Linux Socket 网络编程 TCP协议 TCP是面向连接的可靠的传输层协议。...TCP编程 Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符。常用于不同机器上的进程之间的通信,当然也可以实现本地机器上的进程之间通信。...使用TCP协议的流程图 根据流程图逐一讲解API接口.

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

    Linux TCP RST情况

    其中复位标志RST的作用就是“复位相应的TCP连接”。 TCP连接和释放时还有许多细节,比如半连接状态、半关闭状态等。详情请参考这方面的巨著《TCP/IP详解》和《UNIX网络编程》。...原因在于Socket.close()方法的语义和TCP的“FIN”标志语义不一样:发送TCP的“FIN”标志表示我不再发送数据了,而Socket.close()表示我不在发送也不接受数据了。...; 客户端和服务器统一使用TCP短连接。...然后是客户端和服务器统一使用TCP长连接:客户端使用TCP长连接很容易配置(直接设置HttpClient就好),而服务器配置长连接就比较麻烦了,就拿tomcat来说,需要设置tomcat的maxKeepAliveRequests...,固定5分钟tcp连接回收,而且发现连接出错时,重发之前10s内消息。

    6.6K10

    【Linux网络】TCP协议

    引言 TCP协议是传输层中非常重要的协议。本篇博客我们将从TCP头部信息、TCP状态转移、TCP数据流、TCP数据流的控制等等方面来讨论! 在TCP协议中,通信双方的地位是平等的。...当接收缓冲区收到一个或者多个TCP报文后,TCP模块将它们携带的应用程序的数据按照TCP报文的序号【见下文】依次放入TCP接收缓冲区中,并通知应用程序读取数据。...UDP则不然,发送端应用程序每执行一次写操作,UDP模块就将其封装成一个UDP数据报并发送之。...Linux中(BSD Unix和Windows也是如此), 超时以500ms为一个单位进行控制, 每次判定超时重发的超时 时间都是500ms的整数倍....报文后,等待关闭连接 LAST_ACK, // 服务端发送FIN报文后,等待客户端的ACK确认 TIME_WAIT, // 客户端在收到服务端的FIN报文并发送

    83610

    高并发架构的TCP知识介绍

    这是关于高并发架构网络协议基础知识的第二篇,编程路上的基础心法! 做为一个有追求的程序员,不能只满足增删改查,我们要对系统全方面无死角掌控。...掌握了这些基本的网络知识后,相信一方面日常排错中会事半功倍,另一方面日常架构中不得不考虑的高并发问题,理解了这些底层协议也是会如虎添翼。 本文不会单纯给大家讲讲TCP三次握手、四次挥手就完事了。...TCP的流量控制与拥塞控制 我们常说TCP是面向连接的,UDP是无连接的。那么TCP这个面向连接主要解决的是什么问题呢?...因为在linux上一切皆文件,故每一个socket都是被当作一个文件看待,那么每个文件就会有一个文件描述符。在linux中每一个进程中都有一个数组保存了该进程需要的所有文件描述符。...关于文件描述符有两点注意: 它对应的其实是一个linux上的文件 文件描述符本身这个值在不同进程中是可以重复的 另外补充一点,单机设置的ulimit的上线受限与系统的两个配置: fs.nr_open,进程级别

    1.1K40

    【Linux】: 传输层协议 TCP

    TCP 协议段格式 理解TCP的报头: Linux 内核是C语言写的,在 UDP 说过报头是协议的表现,而协议本质就是结构体数据。所有 tcp报头 就是一个结构化或位段。...这种模式下,请求和应答是并发的。 结论: 不管是串行确认还是批量确认,原则上,无论是 C->S 还是 S->C,每个正常的数据段都需要应答来保证可靠性。但最新的一条消息是没有的 4....Linux 中 ( BSD Unix 和 Windows 也是如此), 超时以 500ms 为一个单位进行控制, 每次判定超时重发的超时时间都是 500ms 的整数倍....参数控制,这与客户端重发 FIN 报文的重传次数控制方式是一样的 ④ 第四次挥手失败,发生如下:  在 Linux 系统中,TIME_WAIT状态会持续 2MSL 后才会进入关闭状态 3....客户端收到服务器对结束报文段的确认, 则进入 FIN_WAIT_2, 开始等待服务器的结束报文段; [FIN_WAIT_2 -> TIME_WAIT] 客户端收到服务器发来的结束报文段, 进入TIME_WAIT, 并发出

    90210

    Linux网络UDP与TCP

    TCP TCP 全称为 “传输控制协议(Transmission Control Protocol”)....16位窗口大小: 首先要清楚,客户端和服务器基于TCP协议进行通信的时候,互发消息的时候,发送的可是完整的TCP报文,一定要携带完整报头。...Linux 中(BSD Unix 和 Windows 也是如此), 超时以 500ms 为一个单位进行控制, 每次判定超时重发的超时时间都是 500ms 的整数倍....(是发送缓冲区的一部分) 已发送已确认的这个范围是可以被覆盖的,表示无效数据,也就相当于从TCP缓冲区当中移除了。 正是因为又滑动窗口的存在,所以才可以一次发送大量TCP报文。...即使没有写入操作, TCP 自己也内置了一个保活定时器, 会定期询问对方是否还在. 如果对方不在, 也会把连接释放. TCP 小结 为什么 TCP 这么复杂?

    53810

    Linux网络编程:TCP初体验

    那么今天我们就开始另外一个套接字,TCP的使用吧! 值得一提的是,二者的使用其实有很大的相似程度,我们本篇文章主要还是通过创建一个简单的TcpServer为主。...=std::make_unique(); tcp_ptr->InitServer(); tcp_ptr->Start(); return 0; } 可以看见我们这里是没有定义一个默认的...那么我们的TCP他所做的初始化工作又是什么呢? 获取套接字 自然也是要先获取套接字也就是文件描述符信息。...但是我们都知道,TCP是一种面向连接 的协议,这意味着在数据传输之前,通信双方必须 先建立逻辑连接,并在传输结束后 释放连接。...=std::make_unique(); tcp_ptr->InitClient(); tcp_ptr->Start(); return 0; } 进程阻塞的问题

    10110

    深入Linux并发同步

    并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理多个任务的能力。并发和并行看起来很像,但实际上是有区别的,如下图(图片来源于网络): ?...上图的意思是,有两条在排队买咖啡的队列,并发只有一架咖啡机在处理,而并行就有两架的咖啡机在处理。咖啡机的数量越多,并行能力就越强。...可以把上面的两条队列看成两个进程,并发就是指只有单个CPU在处理,而并行就有两个CPU在处理。...原子操作 上面介绍过,并发有可能会打断当前执行的进程,然后替切换成其他进程执行。...在Linux内核中,比较常用的锁有:自旋锁、信号量、读写锁 等,下面介绍一下自旋锁和信号量的实现。 自旋锁 自旋锁 只能在多核CPU系统中,其核心原理是 原子操作,原理如下图: ?

    1.8K31

    Linux并发与同步

    在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别。...在Linux从程序到进程中,我们看到了一个程序在内存中的表示。这个程序的整个运行过程中,只有一个控制权的存在。...并发 多线程相当于一个并发(concunrrency)系统。并发系统一般同时执行多个任务。如果多个任务可以共享资源,特别是同时写入某个变量的时候,就需要解决同步的问题。...在并发情况下,指令执行的先后顺序由内核决定。同一个线程内部,指令按照先后顺序执行,但不同线程之间的指令很难说清除哪一个会先执行。...我们需要同步并发系统,这为程序员编程带来了难度。但是多线程系统可以很好的解决许多IO瓶颈的问题。比如我们监听网络端口。如果我们只有一个线程,那么我们必须监听,接收请求,处理,回复,再监听。

    2.3K90
    领券