网络体系结构研究的是什么:
网络的层次结构和每层所使用协议的集合
OSI模型:
应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
TCP/IP协议:
应用层,传输层,网络层,网络接口和物理层
TCP和UDP的区别:
1.共同点:
同属于传输层协议
2.不同点:
TCP:有连接,可靠
UDP:无连接,不保证可靠
TCP:
(1)是一种面向连接的传输层协议(三次握手)
(2)它能提供高可靠性通信(即数据无误,数据无丢失,数据无失序,数据无重复到达)
UDP:
不保证可靠的无连接协议,在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
TCP/IP网络程序设计的预备知识
1.Socket(套接字)
socket需要一种通用的网络编程接口,它是一个特殊的文件描述符(read,write,close)
流式套接字(SOCK_STREAM)----TCP
数据报套接字(SOCK_DGRAM)-----UDP
原始套接字(SOCK——RAW)
TCP服务器/客户端通信
客户端:
1.创建一个socket对象 socket()
2.设置对方的IP地址和端口号 struct_sockaddr_in
3.请求连接 connect()
4.发,收 write/read
send/recv
5.关闭socket对象 close()
服务端:
1.创建socket对象 socket()
2.绑定套接字:bind()
3.启动监听:listen()
4.接收客户的连接请求:accept()
5.创建新的连接套接字
6.收,发
read() write()
7.关闭套接字:close()
TCP常用的函数
- Udp服务器/客户端
1.UDP: (User Datagram Protocol 用户数据报协议)
UDP:不保证可靠的无连接协议,在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
适用情况:
- 发送小尺寸数据(如对DNS服务器进行IP地址查询时)
- 在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络)
- 适合于广播/组播式通信中。
- MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议
- 流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输
IO多路复用
1.为什么要使用IO多路复用
- 应用程序中同时处理多路输入输出流,若采用阻塞模式,将得不到预期的目的;
- 若采用非阻塞模式,对多个输入进行轮询,但又太浪费CPU时间;
- 若设置多个进程,分别处理一条数据通路,将产生进程间的同步与通信问题,使程序变得更加复杂;
- 比较好的方法是使用I/O多路复用。其基本思想是:
- 先构造一张有关描述符的表,然后调用一个函数。当这些文件描述符中的一个或多个已准备好进行I/O时函数才返回。
- 函数返回时告诉进程那个描述符已就绪,可以进行I/O操作。