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;
}
相关推荐
xieliyu.16 分钟前
计算机网络|数据链路层详解:MAC 地址、交换机、ARP 协议、CRC 校验
java·网络·笔记·计算机网络·java-ee
zyf10441626 分钟前
暑期实践日志 Day44:梳理剪辑实践成果,进行学习总结
学习·计算机网络·剪辑·暑期实践·课题任务
ouynagda27 分钟前
Linux Socket 网络编程学习笔记
linux·网络·学习
牛马也想出海29 分钟前
海外社媒代理IP:TikTok、IG等6大社媒平台防封号IP选型指南
运维·服务器·网络·新媒体运营
昌原的儿子LEO35 分钟前
【Linux网络编程】TCP套接字核心函数详解|三次握手|send/recv/listen/accept接口梳理
linux·网络·tcp/ip
我爱cope36 分钟前
【计算机网络 | 网络层12:SDN:控制平面与数据平面分离意味着什么?】
网络·学习·计算机网络·平面
阿崽meitoufa38 分钟前
Prompt Engineering for Agent:让 Agent 稳定运行的提示词写法
网络·人工智能·microsoft
筝筝ba41 分钟前
extended/factory_reset.robot
linux·运维·服务器·网络·网络协议·p2p
网安小学生(兼顾数据库版)43 分钟前
CRA漏洞通报义务倒计时:9.11生效要求深度解读
网络·安全·web安全