高士涛-学习日报

姓名

高士涛

日期

2023/05/15

部门

云服务业务部

导师

王晓明

学习工作内容

C语言实现TCP通信的技术分析

1. 实现TCP连接主要步骤:

在这里插入图片描述

 

2. C语言实现TCP通信的基本步骤如下:

    创建套接字(socket:使用socket函数创建一个文件描述符,指定地址族(AF_INET)、套接字类型(SOCK_STREAM)和传输协议(IPPROTO_TCP)。

    绑定地址和端口(bind:使用bind函数将套接字与服务器的IP地址和端口号绑定,用sockaddr_in结构体存储套接字信息。

    监听连接请求(listen:使用listen函数将套接字设置为监听状态,指定请求队列的最大长度。

    接受连接请求(accept:使用accept函数等待客户端的连接请求,返回一个新的套接字文件描述符,用于与客户端通信。

    发送和接收数据(write/read:使用writeread函数在服务器和客户端之间发送和接收数据,也可以使用sendrecv函数。

    关闭套接字(close:使用close函数关闭套接字,释放资源。

 

3. 主机字节序和网络字节序

主机字节序:不同的芯片,所采用的数值存储方式是不同:大端模式&小端模式

网络字节序:统一使用大端模式来表示数据

字节序的转化

#include <netinet/in.h>

uint32_t ntohl (uint32_t __netlong); // 网络字节序转化为主机字节序 long

uint16_t ntohs (uint16_t __netshort); // 网络字节序转化为主机字节序 short

uint32_t htonl (uint32_t __hostlong); // 主机字节序转化为网络字节序 long

uint16_t htons (uint16_t __hostshort); // 主机字节序转化为网络字节序 short

 

4. 套接字的地址结构

运行在两个不同主机上的进程想要通信:IP地址 端口号

在网络中用来描述计算机中不同程序与其他计算机程序的通信方式。socket其实是一种特殊的IO接口,也是一种文件描述符。

套接字分为三类:

流式socketSOCK_STREAM:流式套接字提供可靠、面向连接的通信流;它使用TCP协议,从而保证了数据传输的正确性和顺序性。

数据报socketSOCK_DGRAM:数据报套接字定义了一种无连接的服务,数据通过相互独立的保温进行传输,是无序的,并且不保证是可靠、无差错的。它使用的数据报协议是UDP

原始socket:原始套接字允许对底层协议如IPICMP进行直接访问,它功能强大但使用复杂,主要用于一些协议的开发。

 

【参考链接:C语言实现TCP通信(服务端与客户端)_c语言tcp_夏小泡泡#的博客-CSDN博客

【参考链接:C语言实现TCP通信_tcp通信程序c语言_菜鸟lr的博客-CSDN博客

【参考链接:C语言实现TCP编程_c tcp_愚蠢的土拨鼠。的博客-CSDN博客

 

遗留问题

 

明日计划

继续深入学习