TCP网络编程流程

本文介绍了TCP网络编程的基础知识,包括OSI七层模型及其作用,以及TCP/IP四层体系结构。详细阐述了TCP网络编程流程,包括服务端的socket、bind、listen、accept、recv/send和close步骤,以及客户端的socket、connect、send/recv和close步骤。同时,讲解了相关协议、端口号的使用以及如何在Linux上进行TCP编程实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先了解一些计算机网络的知识点:

国际标准化组织ISO于1977年成立,不久就提出一个试图使各种计算机在世界范围内互连成网的标准框架,即著名的开放系统互连基本参考模型 OSI/RM(Open Systems Interconnection Reference Model),简称 OSI 。

物理层:将数据转换为可通过物理介质传送的电子信号 (相当于邮局的搬运工人)

数据链路层:决定访问网络介质的方式,在此层将数据分帧,并处理流控制,指定拓扑结构并提供硬件寻址(相当于邮局的装拆箱工人)

网络层:使用数据路由经过大型网络(相当于邮局的排序工人)

传输层:提供终端到终端的可靠连接(相当于公司中跑邮局的送信职员)

会话层:允许用户使用简单易记的名称建立连接(相当于公司中收寄信、写信封和拆信封的秘书)

表示层:协商数据交换格式(相当于公司中替老板写信的助理)

应用层:用户的应用程序和网络之间的接口(老板)

分层带来的好处:(1)各层之间是独立的 (2)灵活性好 (3)结构上可分隔开 (4)易于实现和维护  (5)能促进标准化工作

OSI 的七层协议体系结构的概念清楚,理论也比较完整,但它既复杂又不实用。TCP/IP 四层体系结构则不同,得到广泛应用。

每层体系常用的协议有:

应用层    HTTP  FTP(用于项目)  DNS   SMTP   POP   PING

传输层    TCP   UDP (可以选择其一)

网络层      IP

数据链路层  ARP(地址解离协议)   RARP(逆地址解离协议)

 

TCP网络编程流程:

服务端 socket  bind  listen  accept  recv/send  close

客户端 socket  connect  send/recv  close

 

服务器端

#include<sys/types.h>  //socket 头文件

#include<sys/socket.h>

int socket(int domain,int type,int pro); //函数功能创建socket(相当于买手机)

返回值为-1则出错 大于等于0的都是正确的 返回的是文件描述符 只不过是socket的文件(在linux上一切皆文件)

domain:协议簇  一般使用PF_INET(是TCP/IP协议簇 IPV4)

type:具体的协议  TCP:SOCK_STREAM(流式服务的)    UDP:SOCK_UGRAM

pro:默认为0  (更具体的协议)

 

int bind(int sockfd,struct sockaddr *seraddr,int len);(相当于电话卡)

int sockfd:返回的是文件描述符

struct sockaddr *seraddr:服务器端的ip地址(关键这个参数怎么给?)唯一标识主机:IP地址+端口号

sockaddr 的结构如下:

struct sockaddr_in

{

sa_family_t sin_family; //地址族

u_int16_t sin_port; //无符号的16位short类型用来表示端口号 

struct in_addr sin_addr;

};

主机字节序 :大端模式(高位存低地址)  小端模式(高位存高地址)

网络字节序 :大端模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值