手机版

第10单元 网络IPC套接字

时间:2025-04-23   来源:未知    
字号:

Linux系统编程第10单元 网络IPC套接字

第10单元 网络IPC套接字

网络编程基本概念 10.1 套接字描述符 10.2 寻址 10.3 BSD Socket网络通信编程 10.4 面向连接的网络通信实例 10.5 无连接的网络通信实例 10.6 基于并发服务器的网络数据传输

OSI模型及TCP/IP协议模式应用层 表示层 会话层 传输层 网络层 数据链路层 网络接口层 物理层 传输层 网络层 应用层

TCP/IP体系结构及各层协议各种应用层协议 http ftp smtp telnet dns snmp fns TCP IP ICMP ARP 网络接口层 UDP OSPF RARP IP地址: 逻辑上唯一的标识一台主机 MAC地址: 物理上唯一的标识一台主机 端口: 在主机内唯一标识应用程序

IP地址和端口

IP地址: 标识主机,IPv4—32位,IPv6—128位

端口: 标识某主机上的某个应用进程,16位无符号整数。 一台主机可以通过多个端口提供多个服务 分类: 公认口(well-known port):系统保留,0-1023 动态端口:进程使用需申请。

在全局标识一个应用进程 协议,本地IP,本地端口号

标识一个完整的网间通信 协议,本地IP,本地端口号,远地IP,远地端口号

网络数据包封包与拆包过程主机A:应用程序1 应用层包头 DATA 应用层 主机B:应用程序2 应用层包头 DATA

传输层包头 应用层包头

DATA

传输层

传输层包头 应用层包头

DATA

IP层包头 传输层包头 应用层包头

DATA

IP层

IP层包头 传输层包头 应用层包头

DATA

链路层包头 IP层包头 传输层包头 应用层包头

DATA

包尾

链路层

链路层包头 IP层包头 传输层包头 应用层包头

DATA

包尾

字节顺序

大于一个字节的类型的数据在内存中的存放顺序 Little-Endian 小端,低位字节在内存低地址端,高位字节在内存高地址端。 处理器架构:Intel x86 Big-Endian 大端,高位字节在内存低地址端,低位字节在内存高地址端。 处理器架构:Sun SPARC,Java Virtual Machine

主机/网络字节顺序

主机字节顺序 两种都有可能,所以不同字节顺序的主机之间发送信

息容易出错。 在此特指IP地址和端口

网络字节顺序 TCP/IP协议使用Big-Endian

转换函数。 主机to网络:htonl 网络to主机:ntohl l:32位,s:16位

htons ntohs

参数为原数,返回值为转换后的数。8

套接字类型

流式套接字 基于TCP协议,面向连接,可靠

数据报套接字 基于UDP协议,无连接,不可靠

原始套接字 超级用户使用,对网络下层通信协议进行访问

TCP套接字通信过程

TCP套接字通信过程

服务器先启动 调用socket函数创建一个套接字s。 调用bind函数将s绑定一

个地址和端口号。 调用listen函数使s成为一个监听套接字。 调用accept阻塞等待接收客户端请求,建立与某客户 端的连接套接字ns。 通过ns,调用读写函数处理某客户端请求 终止连接ns。 客户端 调用socket函数创建一个套接字s1。 填写服务器的地址和端口号。 调用connect函数与服务器建立连接。 调用读写函数与服务器发送或接收数据。 终止连接s1。

UDP套接字通信过程

UDP套接字通信过程

服务器 调用socket函数创建一个套接字s。 调用bind函数将s绑定一个地址和端口号。 等待并接收客户端请求。 调用读写函数处理客户端请求

关闭套接字。

客户端 调用socket函数创建一个套接字s1。 调用读写函数发送或接收数据给服务器。 关闭套接字。

准备工作分别创建文件makefile,server.c和client.c。 server.c和client.c先写出main函数结构。 makefile文件内容见右: 测试make命令和 all:server client server:server.c make clean命令

gcc $^ -o $@ client:client.c gcc $^ -o $@ clean: rm server client -f14

socket

#include <sys/socket.h> int socket (int family, int type, int protocol); 功能:创建套接字。 参数::程序所在主机采用的通信协议,AF_INET( IPv4),AF_INET6(IPv6)。 type:要建立的套接字类型:SOCK_STREAM(流式 ), SOCK_DGRAM(数据报), SOCK_RAW(原 始)。 protocol::一般为0,除原始套接字外。 family

返回值:成功:套接字描述符,失败:-1。15

server.c——socket#include <sys/socket.h> ------------------------------------------------------- //变量定义部分 int sockfd; ------------------------------------------------------- //代码部分 sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1) { perror("socket"); exit(1);} 16

…… 此处隐藏:301字,全部文档内容请下载后查看。喜欢就下载吧 ……
第10单元 网络IPC套接字.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)