欢迎来到天天文库
浏览记录
ID:34150452
大小:16.61 MB
页数:49页
时间:2019-03-03
《网络编程(上)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章内容回顾进程间通信的各种方法信号文件锁管道和FIFO信号量消息队列共享内存第5章网络编程(上)预习检查网络模型有哪两类?OSI、TCP/IPOSI有哪七层?物理层、数据链路层、网络层、传输层、会话层、表示层、应用层端口号的作用?区别不同服务TCP建立与关闭连接分别几次握手?3次4次本章目标理解网络基本概念掌握OSI与TCP/IP模型每一层的名称与功能理解数据在网络中传输过程中,数据包封装和拆封装的过程理解TCP协议下的客户端和服务器端模型掌握TCP协议网络编程本章结构网网络络模模型型数数据据的的封封装装和和拆拆封封网网络络基基础础
2、TTCCPP//IIPP协协议议服服务务和和端端口口网网络络编编程程((上上))域域名名SSoocckkeett编编程程基基础础知知识识套套接接字字创创建建与与关关闭闭SSoocckkeett编编程程连连接接远远程程主主机机SSoocckkeettII//OOAAPPII单单客客户户服服务务器器例例子子多多客客户户端端服服务务器器例例子子计算机的联网可以实现使用远程资源共享信息、程序和数据分布处理OSI分层思想OSI七层模型和TCP/IP四层模型数据的封装IP地址192.168.2.10192.168.2.1使用IP协议通讯的主机都有I
3、P地址在计算机中,IPv4地址用一个32位无符号整数表示端口号TCP/UDP协议使用16位整数存储端口号,所以每个主机拥有65,535个端口Port0一些端口被IANA分配给指定应用Port121:FTP23:Telnet80:HTTPRFC1700(大约有2000个保留端口)Port65535TCP和UDP的区别TCP提供一种面向连接的、可靠的字节流服务UDP是无连接的、不可靠的数据协议报套接字(Socket)Socket(套接字)是一种通讯机制,它包含一整套的调用接口和数据结构的定义,它给应用进程提供了使用如TCP/UDP等网络协议
4、进行网络通讯的手段。TCP客户服务器编程模型客户端通常的调用序列是:调用socket函数创建套接字。调用connect连接服务器端。调用I/O函数(read/write)与服务器端通讯。调用close关闭套接字。服务器端通常的调用序列为:调用socket函数创建套接字。调用bind指定本地地址和端口。调用listen启动监听。调用accept从已连接列队中提取客户连接。调用I/O函数(read/write)与客户端通讯。调用close关闭连接。TCP的连接和关闭过程字节序不同体系结构的主机使用不同的字节序存储器中保存多字节整数字节序分为
5、大端和小端字节序网络协议使用网络字节序网络字节序即大端字节序判断字节序staticintisBigEndian(){uint32_tthisx=0x01020304;uint8_t*thisp=(uint8_t*)&thisx;return(*thisp==1)?1:0;}intmain(intargc,char**argv){printf("Byteorder:%sEndian",isBigEndian()?"Big":"Little");return0;}字节序转换函数htonl将一个32位整数由主机字节序转换成网络字节序。ht
6、ons将一个16位整数由主机字节序转换成网络字节序。ntohl将一个32位整数由网络字节序转换成主机字节序。ntohs将一个16位整数由网络字节序转换成主机字节序。通用地址族结构typedefunsignedshortsa_family_t;#includestructsockaddr{sa_family_tsa_family;/*地址族*/charsa_data[14];/*地址值,实际可能更长*/};#defineSOCK_MAXADDRLEN255/*可能的最长的地址长度*/l我们不会真的用到socka
7、ddr结构,我们需要填写真正的地址族相关的地址结构,然后在传递给需要地址结构的函数时,把指向该结构的指针转换成(structsockaddr*)就传递进去IPV4地址族结构#includesin_family地址族,如AF_INET,主structin_addr{机字节序。in_addr_ts_addr;sin_port,端口号,16位值,网络字节序。};sin_addr,IPv4地址,一个32位整数structsockaddr_in{,网络字节序。。uint16_tsin_family;域sin_addr由
8、于历史原因被声明为类uint16_tsin_port;型structin_addr,但它实际上只包含structin_addrsin_addr;一个32位的整数,这个类型定义在charsin_zero[8]
此文档下载收益归作者所有