linux系统的学习:网络

一、OSI开放系统互连参考模型

1.七层模型

物理层--数据链路层--网络层--传输层--会话层--表示层--应用层

2.四层模型

网络接口层--网络层--传输层--应用层

3.五层模型

物理层--数据链路层--网络层--传输层--应用层

二、socket

专门用来进程网络通信的文件

三、TCP协议

特点:

1)面向连接:通信之前,建立好连接

2)可靠连接(无丢失、无失序、无差错、无重复)

3)字节流传输

四、UDP协议

1)无连接

2)不可靠

3)数据报传输

五、TCP通信模型

六、客户端

1.int socket(int domain, int type, int protocol);

@domain:通信域(本地--AF_UNIX/AF_LOCAL,IPV4--AF_INET,IPV6--AF_INET6);

@type:SOCK_STREAM--流式套接字,SOCK_DGRAM--数据报套接字;

@protocol:协议(tcp,udp,0是默认协议);

返回值:

成功返回socket的文件描述符;失败返回-1&&errno会被设置

2.int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

@sockfd:要连接的文件

@:要通信的服务器地址(IP+端口号),找到一台主机以及这台主机上的进程

@:由sockefd决定,表示addr参数地址的大小

3.bzero(&seraddr,sizeof(seraddr));

清空目标,清空的大小

4.实际用的结构体是struck sockaddr_in

5.htons

将端口号的字节序转为网络字节序

6.inet_addr

将IP的字节序转为网络字节序

cpp 复制代码
int client_connect(void)	
{
	int fd = socket(AF_INET,SOCK_STREAM,0);
	if(fd < 0)
	{
		perror("socket fail");
		return -1;
	}

	printf("fd = %d\n",fd);
	struct sockaddr_in seraddr;
	bzero(&seraddr,sizeof(seraddr));
	seraddr.sin_family = AF_INET;
	seraddr.sin_port = htons(50000);
	seraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
	if(connect(fd,(const struct sockaddr*)&seraddr,sizeof(seraddr)) < 0)
	{
		perror("connect fail");
		return -1;
	}
	return fd;
}
相关推荐
zxanz111 小时前
SSL 证书申请下来快吗?
网络·网络协议·ssl
false_or_true12 小时前
一次由 tcp_tw_recycle 引发的“灵异”故障排查:基于双网闸架构的踩坑记
网络·tcp/ip·架构
小HANN12 小时前
华为云企业网站上云实战|从零搭建高可用WordPress全站架构(ECS+RDS+ELB+弹性伸缩+云监控闭环)
linux·运维·服务器·经验分享
爱写代码的倒霉蛋12 小时前
我用book-to-skill把尹圣雨的《TCP/IP网络编程》做成了知识库(适合快速入门网络编程)
网络·网络编程·知识库
li星野12 小时前
5 TYPES OF ADVERBS — One-Page Notes
学习
星恒随风12 小时前
Linux库的底层原理:ELF文件格式、静态链接、程序加载、虚拟地址空间与GOT/PLT详解
linux·运维·笔记·学习·状态模式
罗西的思考12 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 — (7)— 混合机制
笔记·学习
..过云雨12 小时前
19.【网络】多路转接poll、epoll、Reactor反应堆 - 修正版
网络
GeW12 小时前
2026新质生产力路线图:Linux、数据库与智能算力融合报告
linux
Raas10013 小时前
MAI Gateway(魔芋企业级AI网关)功能全解:AI网关能做Prompt注入防护吗?一文看懂AI网关能力矩阵(v1.2.0)
网络·人工智能·gateway·prompt·mai gateway·企业级ai网关·企业级产品