网络编程(华清远见内部培训资料)

上传人:第*** 文档编号:53715583 上传时间:2018-09-04 格式:PPT 页数:104 大小:1.44MB
返回 下载 相关 举报
网络编程(华清远见内部培训资料)_第1页
第1页 / 共104页
网络编程(华清远见内部培训资料)_第2页
第2页 / 共104页
网络编程(华清远见内部培训资料)_第3页
第3页 / 共104页
网络编程(华清远见内部培训资料)_第4页
第4页 / 共104页
网络编程(华清远见内部培训资料)_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《网络编程(华清远见内部培训资料)》由会员分享,可在线阅读,更多相关《网络编程(华清远见内部培训资料)(104页珍藏版)》请在金锄头文库上搜索。

1、嵌入式LINUX 网络编程,主要内容,Internet与TCP/IP协议 Internet历史 OSI模型与TCP/IP协议体系结构 TCP/IP协议 TCP和UDP协议 TCP/IP网络编程 预备知识 系统调用 TCP编程/UDP编程 API 网络封包格式和IP,TCP头 TCP握手过程 I/O模型和服务器模型 网络调试和协议分析wireshark和tcpdump 使用,,网络高级话题 网络属性设置和超时检测 带外数据及编程方法 广播和组播 UNIX域套接字,,Internet与TCP/IP协议 Internet历史 OSI模型与TCP/IP协议体系结构 TCP/IP协议 TCP和UDP协议

2、,,Internet的历史,Internet“冷战”的产物 1957年10月和11月,前苏联先后有两颗“Sputnik”卫星上天 1958年美国总统艾森豪威尔向美国国会提出建立DARPA (Defense Advanced Research Project Agency),即国防部高级研究计划署,简称ARPA 1968年6月DARPA提出“资源共享计算机网络” (Resource Sharing Computer Networks),目的在于让DARPA的所有电脑互连起来,这个网络就叫做ARPAnet,即“阿帕网”,是Interne的最早雏形,,6,Linux为用户提供了完善的、强大的网络功能

3、 在Internet中,为了使硬件和软件有差异的计算机之间联网、彼此之间数据兼容,需要建立一种大家共同都必须遵守的标准,这样才能让不同的电脑按照一定的规则数据交互和资源共享,这种标准就是网络协议。,网络协议,网络地址,A类地址 第1字节为网络地址,其他3个字节为主机地址。第1字节的最高位固定为0 1.0.0.1 126.255.255.255 B类地址 第1字节和第2字节是网络地址,其他2个字节是主机地址。第1字节的前两位固定为10 128.0.0.1 191.255.255.255 C类地址 前3个字节是网络地址,最后1个字节是主机地址。第1字节的前3位固定为110 192.0.0.1 22

4、3.255.255.255 D类地址(组播地址) 不分网络地址和主机地址,第1字节的前4位固定为1110 224.0.0.1 239.255.255.255,,网络的体系结构,网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。 每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务,同时使用下层提供的服务 网络体系结构即指网络的层次结构和每层所使用协议的集合 两类非常重要的体系结构:OSI与TCP/IP,,OSI开放系统互联模型,OSI模型相关的协议已经很少使用,但模型本身非常通用 OSI模型是一个理想化的模型,由于过于复杂,在实际

5、中得不到广泛的使用,尚未有完整的实现。 OSI模型共有七层(右图)。,,网络互联促成了TCP/IP协议的产生,早期的ARPAnet使用网络控制协议(Network Control Protocol,NCP),不同类型和不同操作系统的计算机不能互联,并且NCP没有纠错功能。 1973年由Kahn和Vinton Cerf两人合作为ARPAnet开发了新的互联协议。 1974年12月两人正式发表第一份TCP协议详细说明,从此,TCP/IP协议诞生。 1983年ARPAnet上停止使用NCP,互联网上的主机全部使用TCP/IP协议。TCP/IP协议成为Internet中的“世界语”,,网络互联促成了T

6、CP/IP协议的产生,,TCP/IP协议,TCP/IP协议 传输控制/网际协议(Transfer Control Protocol/Internet Protocol) 又称作网络通讯协议 Internet国际互联网络的基础,RFC793 TCP/IP实际上是由几个不同的协议组成的,这些协议在不同层面上提供不同的应用和服务。所以又称为TCP/IP协议族。 四个层次:网络接口层、网际层、传输层、应用层,,TCP/IP协议族的体系结构,TCP/IP协议是Internet事实上的工业标准。 一共有四层,,TCP/IP与OSI参考模型的对应关系,,TCP/IP协议下的数据包,,Ethernet hea

7、der,IP header,TCP header,App. header,User data,Ethernet trailer,14,20,20,46 - 1500,数据的封装与传递过程,,TCP头,17,IP头,18,TCP协议特点,TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信) 适用情况: 适合于对传输质量要求较高,以及传输大量数据的通信。 在需要可靠数据传输的场合,通常使用TCP协议 MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议,,UDP协议的特点,UDP(User Dat

8、agram Protocol)用户数据报协议,是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。 适用情况: 发送小尺寸数据(如对DNS服务器进行IP地址查询时) 在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络) 适合于广播/组播式通信中。 MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议 流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输,,UPD头,21,TCP/IP网络编程 预备知识 系统调用 TCP编程/UDP编程 API 网络封包格式和IP,TCP头 TCP

9、握手过程 I/O模型和服务器模型 网络调试和协议分析wireshark和tcpdump 使用,,TCP/IP网络编程预备知识,Socket IP地址 端口号 字节序,,Socket 简介,1982 - Berkeley Software Distributions 操作系统引入了socket作为本地进程之间通信的接口 1986 - Berkeley 扩展了socket 接口,使之支持UNIX 下的TCP/IP 通信 现在很多应用 (FTP, Telnet, etc) 都依赖这一接口,,Socket 简介,Socket 是一个编程接口 是一种特殊的文件描述符 (everything in Uni

10、x is a file) 并不仅限于TCP/IP协议 面向连接 (Transmission Control Protocol - TCP/IP) 无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX),,为什么需要Socket,普通的I/O操作过程 打开文件读/写操作关闭文件 TCP/IP协议被集成到操作系统的内核中,引入了新型的“I/O”操作 进行网络通信的两个进程在不同的机器上,如何连接? 网络协议具有多样性,如何进行统一的操作 需要一种通用的网络编程接口:Socket,,Socket类型,流式套接字(

11、SOCK_STREAM) 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。 数据报套接字(SOCK_DGRAM) 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。 原始套接字(SOCK_RAW) 可以对较低层次协议如IP、ICMP直接访问。,,IP地址,IP地址是Internet中主机的标识 Internet中的主机要与别的机器通信必须具有一个IP地址 IP地址为32位(IPv4)或者128位(IPv6) 每个数据包都必须携带

12、目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由 表示形式:常用点分形式,如202.38.64.10,最后都会转换为一个32位的无符号整数。 IP地址分类 子网掩码,,端口号,为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区别 TCP端口号与UDP端口号独立 端口号一般由IANA (Internet Assigned Numbers Authority) 管理 众所周知端口:11023(1255之间为众所周知端口,2561023端口通常由UNIX系统占用) 注册端口:102449150 动态或私有端口:4915165535,,套接字和端口,,进程 -2,TC

13、P,UDP,IP (+ICMP),网络层,网线,进程 -1,进程 -4,进程 -3,端口,内核,每个 socket 都和端口、协议相联系,套接字和端口,,tcpmux,.,系统分配的端口,1,7,1024-5000,21,ftp,echo,23,telnet,自己分配的端口,5001-65536,保留的 端口,注册的 端口,其他 端口,字节序,不同类型CPU的主机中,内存存储多字节整数序列有两种方法,称为主机字节序(HBO): 小端序(little-endian) - 低序字节存储在低地址 将低字节存储在起始地址,称为“Little-Endian”字节序,Intel、AMD等采用的是这种方式;

14、 大端序(big-endian)- 高序字节存储在低地址 将高字节存储在起始地址,称为“Big-Endian”字节序,由ARM、Motorola等所采用 网络中传输的数据必须按网络字节序,即大端字节序 在大部分PC机上,当应用进程将整数送入socket前,需要转化成网络字节序;当应用进程从socket取出整数后,要转化成小端字节序(原因?),,字节序,网络字节序(NBO - Network Byte Order) 使用统一的字节顺序,避免兼容性问题 主机字节序(HBO - Host Byte Order) 不同的机器HBO是不一样的,这与CPU的设计有关 Motorola 68K系列、ARM系列,HBO与NBO是一致的 Intel X86系列,HBO与NBO不一致,,字节序转换函数,把给定系统所采用的字节序称为主机字节序。为了避免不同类别主机之间在数据交换时由于对于字节序的不同而导致的差错,引入了网络字节序。 主机字节序到网络字节序 u_long htonl (u_long hostlong); u_short htons (u_short short); 网络字节序到主机字节序 u_long ntohl (u_long hostlong); u_short ntohs (u_short short);,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 外语文库 > 英语学习

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