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

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.5K30

【Linux】:Socket编程 TCP

前言 在上篇文章里面已经讲了关于 Socket UDP 网络编程的内容,这篇文章我们主要是关于 Socket TCP 网络编程的内容 老样子,先写 Makefile 文件,如下: .PHONY:all...all:server_tcp client_tcp server_tcp:UdpServerMain.cc g++ -o $@ $^ -std=c++17 -lpthread client_tcp...Mutex.hpp,然后对我们之前实现的 Common.hpp 也要做一下修改 2.2 listen & accept 函数 在写具体实现代码之前,我们先来了解一些相关知识 listen listen 函数是网络编程中的一个重要函数...accept accept 函数是网络编程中的一个核心函数,用于服务器端接受客户端的连接请求。...EchoServer -- 线程池 引入我们之前写的【Linux】:线程库 Thread.hpp 简单封装 Thread.hpp 以及 单例模式下的【Linux】:日志策略 + 线程池(单例模式 Threadpool.hpp

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

    【Linux网络】Socket编程:TCP网络编程

    在前面的文章中,我们使用了UDP进行网络编程,这篇文章我们就来使用另一个TCP进行网络编程,我们知道UDP和TCP都是传输层协议,但是特点不同,前者无连接,不可靠传输,面向数据报,后者有连接,可靠传输...,我们TCP在绑定之后需要listen 为什么UDP不需要listen,而TCP就需要listen呢?...TCP 的工作方式:为什么需要 listen TCP的通信过程就像打电话,有一套严格的礼仪。 服务器准备接听:服务器启动后,它不知道谁会打来电话。...注意:这里涉及到的三次握手等,我们后面在介绍传输层TCP协议时会详细介绍这些相关内容,目前我们暂只需要学会TCP网络编程的相关系统调用,后续会慢慢介绍其它 UDP 的工作方式:为什么不需要 listen...如何设置: 可以设置为 SOMAXCONN(定义在 sys/socket.h 中),让系统使用一个默认的、相对较大的合理值(在Linux上,通常可以通过 /proc/sys/net/core/somaxconn

    21010

    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; } 进程阻塞的问题

    25310

    【Linux网络】Linux网络编程套接字,UDP与TCP

    在套接字编程的世界里,UDP(用户数据报协议)与TCP(传输控制协议)如同双生子,各自以其独特的优势占据着不同的应用场景。...本文旨在深入探讨Linux环境下,如何通过套接字编程技术,驾驭UDP与TCP这两种强大的网络传输协议,从零开始构建基础的网络通信能力。...让我们一同踏上这段探索之旅,揭开Linux网络编程的神秘面纱,领略UDP与TCP的魅力所在,共同构建更加智能、互联的世界! 1....总结 在探索Linux网络编程的浩瀚领域中,UDP与TCP作为两大核心协议,不仅构建了互联网通信的基石,也成为了每一位网络开发者必须掌握的利器。...在结束这篇文章之际,愿每一位读者都能在网络编程的世界里找到自己的位置,用代码编织梦想,用技术照亮未来。让我们携手前行,在Linux网络编程的广阔天地中,共同书写属于我们的辉煌篇章!

    1.2K10

    【Linux网络编程】传输层协议TCP,UDP

    在Linux内核中的部分源代码如下: struct sk_buff{ struct sk_buff* next; struct sk_buff* prev; //…… //…… unsigned...如果使用TCP协议,移动一个TCP报头的大小,然后填充 TCP报头。当数据报从传输层交付到网络层时,data指针向上移动,然后再填充上对应的报头 ,依次类推。...三,TCP协议 tcp协议,全称为"传输控制协议"。人如其名,要对数据的传输进行 详细的控制。 1,TCP协议格式 源/目的端口号:表示数据从哪个进程来,要到哪个进程去。...此处的校验,不仅包含TCP首部,也包含TCP数据部分。 4位首部长度:表示TCP报头的大小(包含选项),单位是4字节。比如,1111表示15,对应的报头大小为15*4=60字节。...Linux中(BSD Unix和Windows也是如此),超时以500ms为一个单位 进行控制,每次判定超时重发的超时时间都是500ms的整数倍。

    22210

    网络编程—tcp

    一、TCP简介 TCP介绍 TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF...TCP通信需要经过创建连接、数据传送、终止连接三个步骤。 TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中,"打电话"。 TCP特点 1....可靠传输 1)TCP采用发送应答机制 TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功 2)超时重传 发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段...() View Code 上去 五、tcp三次握手、四次挥手 tcp三次握手 ?  ...tcp四次挥手 ?

    1K31

    socket编程【2】TCP编程

    TCP/IP套接字的两端连接之后,可以完成双向通信。 客户端 大多数连接都是可靠的TCP连接。创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。...客户端要主动发起TCP连接,必须知道服务器的IP地址和端口号。 注意connect的参数是一个tuple,包含地址和端口号。...建立TCP连接后,我们就可以向新浪服务器发送请求,要求返回首页的内容: # 发送数据: s.send('GET / HTTP/1.1\r\nHost: www.sina.com.cn\r\nConnection...: close\r\n\r\n') TCP连接创建的是双向通道,双方都可以同时给对方发数据。...首先,创建一个基于IPv4和TCP协议的Socket: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 然后,我们要绑定监听的地址和端口。

    94410

    【Linux网络编程】Socket编程--TCP:echo server | 多线程远程命令执行

    前言 在学习本章之前,先看【Linux网络编程】Socket编程–UDP:实现服务器接收客服端的消息 | DictServer简单的英译汉的网络字典 | 简单聊天室】,里面详细介绍函数的使用方法,小编在这篇文章不再具体介绍...TCP echo server 服务端 创建套接字 | 绑定套接字 #include /* See NOTES */ #include int socket(int domain, int type, int protocol); 在TCP中,第二个参数,指定套接字类型应该为SOCK_STREAM,其余的和UDP中一样。...是面向连接的,因此TCP需要不断地能够做到获取连接,所以设置成监听状态,让套接字准备好,随时准备等待别人来连网。...是面向字节流的,符合流式的特性,在Linux以及C++中,学过文件流等流式特性,这些都属于文件。

    54710

    Linux网络编程:TCP的远程多线程命令执行

    前言: 好久不见,最近忙于其他事情,就耽误了咱们的Linux的网络部分的学习。 今天咱们先来给之前所学的TCP的部分进行一个首尾工作,主要是给大家介绍一些函数与补充一下知识点。...一、前文补充 前面我们已经通过多线程,多进程,线程池的方式分别实现了一个我们的TCP的EchoServer,今天我们先借着之前的代码来继续学习。...我们之前在进行TCP的数据的读取写入的时候,用到的函数是大家之前见过的write与read函数。其实我们这里之所以用到他们,主要是为了帮助大家理解我们通过accept返回的文件描述符。...但是这个不完善是因为TCP的特点。还记得吗,TCP是面向字节流,UDP是面向数据报。 对于我们的UDP来说,每次传输数据都是把所有数据传输过去,而面向字节流不同。...->InitServer(); tcp_ptr->Start(); return 0; } 这个方法之前我们已经使用过很多次了。

    19810

    Linux网络-------1.socket编程基础---(TCP-socket)

    1.tcp和udp的区别 UDP(User Datagram Protocol)和 TCP(Transmission Control Protocol)是两种最常用的传输层协议,它们在可靠性、连接方式、...连接方式 TCP:面向连接(Connection-Oriented) 通信前需通过 三次握手 建立连接,结束时通过 四次挥手 断开连接。 确保双方准备好通信后才传输数据。...数据传输方式 TCP:基于字节流(Byte Stream) 数据被视为连续的字节流,无明确边界。 应用层需自行处理消息边界(如添加分隔符)。...速度和效率 TCP:速度较慢,开销大 需要维护连接状态、重传丢失数据、保证顺序,引入额外延迟。 首部较大(20字节以上),包含控制字段(如序列号、ACK号)。...混合使用:部分应用同时使用两者(如QUIC协议结合了UDP的速度和TCP的可靠性)。 2.tcp协议函数详细介绍 1.listen函数(初始化)-------这个基本上只在服务端设置!!

    46110
    领券