网络编程(摘要)
来源:互联网 发布:算法第四版pdf 图灵 编辑:程序博客网 时间:2024/04/29 06:29
网络体系结构:
指网络的层次结构和每层所使用协议的集合
分为:OSI与TCP/IP
OSI模型七层结构
物理层 链路层 | 网络层 | 传输层 | 会话层 表示层 应用层
Ethernet ARP RARP I P、ICMP TCP UDP同下 无协议 FTPTelnet HTTP
令牌环网 MTU PPP IGMP DNS SMTP
FDDI
对应的TCP/IP协议
TCP/IP协议
网络接口与物理层 | 网络层 | 传输层 | 应用层
UDP和TCP
相同点:同为传输协议
不同点:TCP:有链接,可靠 UDP:无连接,不可靠
TCP:
面向连接的传输层协议,他能提供高可靠性通信(即数据无误,无丢失,无失序,无重复到达的通信)
使用情况:
适合于对传输要求较高,以及传输大量数据的通信;在需要可靠数据传输的场合,通常使用TCP;MSN QQ登录
UDP:
用户数据报协议,是不可靠的无连接协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的传输。全双工、无连接的不保证可靠的数据报通信
使用情况:发送小尺寸数据(对DNS服务器进行ip地址查询时)
在接收到数据,给出应答较困难的网络中使用UDP,(如无线网络)
适合于广播/组播式通信中
MSN、qq、Skype 点对点文本通信及音视频通信
流媒体、VOD、IPTV等网络多媒体服务中
TCP服务端
socket-》bind-》listen-》accept-》send/revc-》close(返回accept)
TCP客户端
socket-》bind(可选)-》connect-》send/revc-》close
UDP服务端
socket-》bind-》revcfrom-》sendto(返回recvfrom)
UDP客户端
socket-》bind-》sendto-》recvfrom(返回sendto)
I/O模型
阻塞I/O 非阻塞I/O I/O多路复用 信号驱动I/O
阻塞I/O模式:
大部分程序使用的都是阻塞I/O模式
缺省情况下,套接字建立后所处于的模式就是阻塞I/O模式
发生阻塞的操作:
读操作:read recv recvfrom
写操作:write send
其他操作:accept
非阻塞I/O模式:
当我们将一个套接字设置为非阻塞模式,我们相当于告诉操作系统内核:当我请求的
I/O操作不能马上完成,你想让我的进程进行休眠等待的时候,不要这么做,请立马返回一个错误给我
当一个应用程序使用了非阻塞模式的套接字,他需要使用一个循环来不停地测试是否一个文件描述符有数据可读(polling)
应用程序不停的polling内核来检查是否I/O操作已经就绪。这将是一个及浪费CPU资源的操作
多路复用I/O:
应用程序同时处理多路输入输出流,若采用阻塞模式,将得不到预期的目的
若采用非阻塞模式,对多个输入进行轮询,又太浪费CPU时间
若设置多个进程,分别处理一个数据通路,将新产生进程间的同步与通信问题,是程序变得更加复杂
比较好的是使用I/O多路复用:
1.先构造一张有关描述符的表,然后调用一个函数。当这些文件描述符中的一个或多个已准备好进行I/O时函数才返回
2.函数返回时告诉进程那个文件描述符一就绪,可以进行I/O操作
并发服务器模型:服务器接收客户端的链接请求后创建子进程为客户端来服务
缺点:如果有多个客户端的话,服务端需要创建多个子进程。影响服务端的运行效率
指网络的层次结构和每层所使用协议的集合
分为:OSI与TCP/IP
OSI模型七层结构
物理层 链路层 | 网络层 | 传输层 | 会话层 表示层 应用层
Ethernet ARP RARP I P、ICMP TCP UDP同下 无协议 FTPTelnet HTTP
令牌环网 MTU PPP IGMP DNS SMTP
FDDI
对应的TCP/IP协议
TCP/IP协议
网络接口与物理层 | 网络层 | 传输层 | 应用层
UDP和TCP
相同点:同为传输协议
不同点:TCP:有链接,可靠 UDP:无连接,不可靠
TCP:
面向连接的传输层协议,他能提供高可靠性通信(即数据无误,无丢失,无失序,无重复到达的通信)
使用情况:
适合于对传输要求较高,以及传输大量数据的通信;在需要可靠数据传输的场合,通常使用TCP;MSN QQ登录
UDP:
用户数据报协议,是不可靠的无连接协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的传输。全双工、无连接的不保证可靠的数据报通信
使用情况:发送小尺寸数据(对DNS服务器进行ip地址查询时)
在接收到数据,给出应答较困难的网络中使用UDP,(如无线网络)
适合于广播/组播式通信中
MSN、qq、Skype 点对点文本通信及音视频通信
流媒体、VOD、IPTV等网络多媒体服务中
TCP服务端
socket-》bind-》listen-》accept-》send/revc-》close(返回accept)
TCP客户端
socket-》bind(可选)-》connect-》send/revc-》close
UDP服务端
socket-》bind-》revcfrom-》sendto(返回recvfrom)
UDP客户端
socket-》bind-》sendto-》recvfrom(返回sendto)
I/O模型
阻塞I/O 非阻塞I/O I/O多路复用 信号驱动I/O
阻塞I/O模式:
大部分程序使用的都是阻塞I/O模式
缺省情况下,套接字建立后所处于的模式就是阻塞I/O模式
发生阻塞的操作:
读操作:read recv recvfrom
写操作:write send
其他操作:accept
非阻塞I/O模式:
当我们将一个套接字设置为非阻塞模式,我们相当于告诉操作系统内核:当我请求的
I/O操作不能马上完成,你想让我的进程进行休眠等待的时候,不要这么做,请立马返回一个错误给我
当一个应用程序使用了非阻塞模式的套接字,他需要使用一个循环来不停地测试是否一个文件描述符有数据可读(polling)
应用程序不停的polling内核来检查是否I/O操作已经就绪。这将是一个及浪费CPU资源的操作
多路复用I/O:
应用程序同时处理多路输入输出流,若采用阻塞模式,将得不到预期的目的
若采用非阻塞模式,对多个输入进行轮询,又太浪费CPU时间
若设置多个进程,分别处理一个数据通路,将新产生进程间的同步与通信问题,是程序变得更加复杂
比较好的是使用I/O多路复用:
1.先构造一张有关描述符的表,然后调用一个函数。当这些文件描述符中的一个或多个已准备好进行I/O时函数才返回
2.函数返回时告诉进程那个文件描述符一就绪,可以进行I/O操作
并发服务器模型:服务器接收客户端的链接请求后创建子进程为客户端来服务
缺点:如果有多个客户端的话,服务端需要创建多个子进程。影响服务端的运行效率
0 0
- 网络编程(摘要)
- iOS 网络编程摘要
- 《Java网络编程》摘要
- Linux (编程)摘要
- TCP/IP网络编程 --摘要一
- TCP/IP网络编程 --摘要二
- TCP/IP网络编程 --摘要三
- TCP/IP网络编程 -- 摘要四五
- 网络通信(章节摘要)
- 谓词编程指南(摘要)
- 投稿摘要(源于网络1)
- Java数据库编程(章节摘要)
- JSP标签编程(章节摘要)
- PL/SQL编程基础(章节摘要)
- 面向对象编程(章节摘要)
- 敏捷开发网络摘要
- 网络术语摘要!
- 网络博客感言摘要
- 编写一个简易的 HTTP 服务器程序
- 51nod 1027 大数乘法
- Linux运维班第四,五,六,七单元笔记整理
- 【坐在马桶上看算法】算法7:Dijkstra最短路算法
- NYOJ 1103 区域赛系列一多边形划分
- 网络编程(摘要)
- 51nod 1031 骨牌覆盖
- centos7使用无线wifi连接
- 数据库里面已经改成utf8了,但还是乱码问题
- java对象的序列化和反序列化
- 51nod 1035 最长的循环节
- Fzu 2177 ytaaa【dp+RMQ--------ST】
- 51nod 1042 数字0-9的数量
- NavigationView