linux网络编程3

上传人:小** 文档编号:46123671 上传时间:2018-06-22 格式:DOC 页数:145 大小:2.07MB
返回 下载 相关 举报
linux网络编程3_第1页
第1页 / 共145页
linux网络编程3_第2页
第2页 / 共145页
linux网络编程3_第3页
第3页 / 共145页
linux网络编程3_第4页
第4页 / 共145页
linux网络编程3_第5页
第5页 / 共145页
点击查看更多>>
资源描述

《linux网络编程3》由会员分享,可在线阅读,更多相关《linux网络编程3(145页珍藏版)》请在金锄头文库上搜索。

1、1.网络编程概述网络编程概述1. 1 网络回顾网络回顾简单:不需要基础、基本不需要想象力(顺序学习时) 、也不需要死记硬背。 网络:通过通信线路把若干个计算机(应用程序)相连数量多、操作系统各异、字节顺序不同、通信速度、处理能力不同 可行性:数据一致性、寻址(计算机、应用程序) 数据质量:速度、稳定性、安全性等。 发展历程:以主机为中心、计算机互联、体系结构标准化网络。1.2 网络模型网络模型ISO/OSI:7 层。TCP/IP:4 层。应用应用表示会话无传输传输网络互连网数据链路物理主机至网络1.3 TCP/IP 协议协议IP 协议、ICMP 协议、IGMP 协议位于网络层,TCP, UDP

2、 协议位于传输层IP 协议:解决寻址、路由等问题,非面向连接的、不可靠的连接。 ICMP 协议:提供针对 IP 协议的简单错误报告; IGMP 协议:提供多播管理; TCP, UDP 协议:流控、差错处理等;Internet 协议(协议(IP) 数据包格式数据包格式版本版本首部长度首部长度服务类型服务类型数据包长度数据包长度标识标识MP碎片偏移碎片偏移生存时间生存时间TTL(Time to Live)协议协议首部校验和首部校验和源源 IP 地址地址目的目的 IP 地址地址选项选项数据数据 首部长度: 定长 5 个双字,变长含 IP 选项; 数据包总长:含首部和数据区,单字; 服务类型: 3 位

3、优先顺序字段、3 个标志位(D,T,R, 延迟、吞吐量、可靠性) ,2 位空闲, 目前基本不用; 生存时间:路由器计数,-1; 协议:创建该包的高层协议,如:TCPUDP; 首部校验和:取结果的补码 源、目的:选项:目前已定义的有 安全性、严格路由选择、松路由选择、记录路由、时间戳。NOTE: 不提供数据区的校验。Ipv4, Ipv6IP 地址:32 位 19216804 主机部分全 1,广播127001A, B, C, D 四类网址 子网 Internet 消息控制协议(消息控制协议(ICMP) 路由器使用 ICMP 协议,来报告 IP 数据包的错误,同时也传送控制消息。 ICMP 数据包封

4、装在 IP 数据包的数据部分中,本身有校验。 Internet 组管理协议(组管理协议(IGMP) Internet Group Management Protocol,它的数据包嵌入在 IP 数据包内,该协议是 IP 主机用 来报告多址广播组成员身份的协议。一方面通过 IGMP 协议,主机可以通知本地路由器希望加入并接 收某个特定组播组的信息,或退出某个组;另一方面,路由器通过 IGMP 协议周期性地查询局域网内 某个已知组的成员是否处于活动状态 用户数据报协议(用户数据报协议(UDP) 非面向连接的、不可靠的数据报服务。 端口的概念,与进程相关,不同的进程具有不同的端口。校验和项可选。 服

5、务器使用公认端口,客户机使用自由端口,小于 256 为保留端口。 每个数据报之间相互独立,无顺序。Linux 中,每个端口都有一个缓存区队列。 发数据:UDP - IP, 收数据: IP - UDP,匹配端口,放入相应缓存区,若不可匹配,丢数据报, 返回一个“端口不可到达“ ICMP 消息,队列满时,丢新到的报,不发错误消息。数据包格式数据包格式UDP 源端口源端口UDP 目的端口目的端口UDP 数据报长度数据报长度UDP 校验和校验和数据数据源端口、目的端口: 单字 数据报长度:字节; 校验和: 可选; 数据: 传输控制协议(传输控制协议(TCP) 面向连接的、可靠的数据流服务。 通信之前,

6、必须先建立一条连接;通信结速,必须断开连接; 用确认和超时重传保证通信的可靠性; 用序列号保持字节流的顺序;为每个要发送的字节数据分配一个序列号,并将启始序列号通知 对方(双向) ; 提供流量控制,接收方总是把它能接收的数据量告诉对方,设置了一个大小可变的接收窗口。 窗口大小在确认数据断中,通知对方,发送方据此发送数据。 全双工信道。 TCP 不支持多点播送或广播。 数据包格式数据包格式源端口源端口目的端口目的端口序列号序列号确认号确认号HLEN保留保留码位码位窗口校验和校验和紧急指针紧急指针选项选项填充字节填充字节数据数据。 。 。 。 。 。URGurgentACKacknowledgeP

7、SHpushRSTresetSYNsynchronizeFINfinish源端口、目的端口: 字 序列号:双字 确认号:双字 窗口:字校验和:字 紧急指针与相对于初始序列号的偏移量相关注意: TCP 连接是字节流而非报文流。 例如,如果发送进程将 4 块 512 字节的数据写到 TCP 流上,那么这些数据可能按 4 个 512 字节的数据块, 或者 2 个 l024 字节的数据块,或 1 个 2048 字节的数据块, 或者是其他一些方式传送到接收进程的。接收方无法检测出这些数据是以哪种单位写入的。 缓存。 当一个应用程序把数据送给 TCP 实体时,TCP 根据自己的判断,可能会立刻将其 发送出

8、去或将其缓存起来(为了收集较大量的数据,然后发送) 。然而,有时候应用程 序很想将数据立即发送出去。例如,假设一个用户登录到了远端机器上,他输入了一条 命令并按下回车键之后,该命令行应该立刻送往远端机器而不是暂存起来直到用户输入了 下一条命令后再发送。为了强制立即发送数据,应用程序可以使用 PUSH 标志,通知 TCP 不能耽搁数据的发送。 (对于 Ipv4 来说)TCP 工作流程:工作流程: 建立连接 连接过程:三次握手。C: SYN X S: SYN Y, ACK X+1 C: ACK Y+1常用选项:Maximum Segment Size(MSS),取小的 窗口大小比例,2*N 倍分析

9、:数据通信 C: DATA(请求) S: DATA(响应) C: ACK DATA关闭连接 CS: FIN X SC: ACK X+1 CS: FIN Y SC: ACK Y+1 2,3 可合为一步两军问题,不存在完全可靠的连接及断开方法。TIME_WAIT 状态, 保证可靠关闭,再次受到 FIN 时,可回答 ACK 保证重复数据段在网络中消失,解决路由缓存客户应用程序的透明性:最终用户并不需要了解数据传送的具体情况。1.4 网络编程模式与接口网络编程模式与接口网络模式:对等、服务、混合。 客户机:发起通信请求的应用程序。 服务器:等待、处理并返回处理结果的应用程序。 C/S 是一种不对称的编

10、程模型。一般流程: 1 服务器启动,初始化(socket) ,等待请求; 2 客户机启动,初始化; 3 客户机与服务器建立一条连接; 4 客户机向与服务器请求服务; 5 服务器响应请求,提供服务,返回数据; 6 服务器断开与客户机的连接,重新等待请求。B/S 是浏览器/服务器模型,三层或多层结构,具有跨平台、逻辑结构清晰、安全等特性。两种服务器类型:1. 循环服务(iteractive) 优缺点:2. 并发服务 (concurrent)1.5 服务方式服务方式面向连接/无连接;单工/半双工/双工; 流控制; 差错控制; 字节流服务。1.6 Linux 系统及系统及 Linux 网络发展网络发展

11、Linux,是由 Linus Torvalds 和其他人共同开发的操作系统。 一九九一年底,芬兰赫尔辛基大学的学生 -Linus Torvalds,因个人兴趣,开始写作系统的核心, 他并把核心的原始码完整公开到网络上,提供网友一同研究与讨论。很短的时间内,网络上热心的朋友 纷纷加入发展行列,一九九二年初,整个系统已经可以在大部份的 Intel PC 上安装及启动。而 Linux 这个名称,便来自於 Linuss Unix 一词。 当 Linux 诞生时,Unix 的两大流派:System V 和 BSD ( Berkeley Software Distribution )的网 络功能已相当成熟

12、。由于版权和追求技术创新的原因,Linux 网络开发者选择了重新开发的方式,先后编 写了 NET-2, NET-3, NET-4,等版本的内核代码。 Linux 的优缺点安装 Linux 系统时,需要一个单独的硬盘分区,安装前要制作启动盘,通过 rewrite 命令,将 imagesboot.img 拷贝到软盘上。1.7 网络调试方法网络调试方法ifconfig网卡地址、IP 地址(linux) netstat 路由、套接字状态 ping(ICMP) 与远方机连接 telnet 远程登录2.TCP 套接字编程套接字编程2.1 套接字地址1. 什么是套接字应用程序socket网络协议S So o

13、c ck ke et t 函函数数应应用用程程序序函函数数socket 是一个工具,或者说是一种不可见控件,应用程序可以通过 socket 函数,来访问低 层网络协议。 常用的套接字类型有:流式套接字、数据报套接字、原始套接字、Unix 套接字等。2. 主要内容 socket 地址结构、 网络字节顺序与主机字节顺序, 基本函数 socket, connect, bind, listen, accept, close, getsockname, getpeername 等。 高级函数 send, sendto, recv, recvfrom, sendmsg, recvmsg, readv, w

14、ritev 等。3socket 地址结构 每种协议具有不同的套接字,通用的套接字地址通用的套接字地址结构如下:struct socketaddr unsigned short sa_family; /AF_xxxchar sa_data14;/协议地址 AF_INET 代表 TCP/IP 协议族 地址结构前缀为 sockaddr_ 如:sockaddr_inTCP/IPTCP/IP 协议族的套接字地址协议族的套接字地址结构如下: #include struct in_addr _u32 s_addr;/uint struct sockaddr_in short int sin_family;

15、/地址类型:AF_XXXunsigned short int sin_port;struct in_addr sin_addr;unsigned char - - pad- - SOCKET_SIZE_-sizeof(short int)- sizeof(unsigned short int)-sizeof(struct in_addr); #define sin_zero - - padnote: 在 中,前者与平台有关,后者与平台无关 sin_port, sin_addr 以网络字节顺序存放,因二者要在网上传输,而地址结构本身不在网上传输。设置 IP 地址时,将字串转为二进制数int in

16、et_aton(const char* cp,struct in_addr * inp); /src, desunsigned long int inet_addr(const char *cp);char* inet_ntoa(struct in_addr in); IP 地址作为参数传送时,注意 xxxaddr.sin_addr, xxxaddr.sin_addr.s_addr的差别3.23.2 字节顺序字节顺序 little-endian, big-endian#include unsigned long int htonl(unsigned long int hostlong); unsigned short int htons(unsigned short int hostshort); unsigned long int ntohl(unsigned long int netl

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号