网络体系结构
网络体系结构研究的是计算机之间相互通信的层次,以及各层中的协议和层次之间接口的集合。
TCP: (Transfer Control Protocol 传输控制协议)
1. 是一种面向连接的传输层协议 (三次握手)
2. 它能提供高可靠性通信(即数据无误,数据无丢失,数据无失序,数据无重复到达)
适用情况:
适合于对传输质量要求较高,以及传输大量数据的通信.
在需要可靠数据传输的场合,通常适用TCP协议
MSN/QQ等即时通讯软件的用户登录账户管理相关的功能采用TCP协议
UDP: (User Datagram Protocol 用户数据报协议)
UDP不保证可靠的无连接协议,在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
适用情况:
发送小尺寸数据(如对DNS服务器进行IP地址查询时)
在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络)
适合于广播/组播式通信中。
MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议
流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输
套接字(Socket)
一种独立于协议的网络编程接口,它是一个特殊的文件描述符(read,write,close)。
所谓套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。
1.流套接字(SOCK_STREAM)
流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP协议。
2.数据报套接字(SOCK_DGRAM)
数据报套接字提供一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP协议进行数据的传输。由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。
3.原始套接字(SOCK_RAW)
原始套接字与标准套接字的区别在于:原始套接字可以读写内核没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送的数据必须使用原始套接。
IP(Internet Protocol Address)
是指互联网协议地址,是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,因此IP地址是主机的唯一标识。
1. A类地址: 1个字节网络地址+3个字节主机地址
A类地址最高为0
0000001 ~~~~~ 0111110 地址范围是1.0.0.0~126.0.0.0
0111111 127.0.0.1 回环地址
2. B类地址:2个字节网络地址+2个字节主机地址
B类地址最高为10
10 000000 ------------- 128
10 111111 ------------- 191
128.0.0.0 ------ 191.255.255.255
3.C类地址:3字节网络地址+1个字节主机地址
C类地址最高为110
110 00000 ------ 192
110 11111 ------ 223
192.0.0.0~223.255.255.255
4.D类地址用于组播
最高为1110
1110 0000 ------ 224
1110 1111 ------ 239
224.XXX.XXX.XXX ----- 239.XXX.XXX.XXX
5.E类地址
广播地址: XXX.XXX.XXX.255该网段的广播地址 255.255.255.255全网广播
端口号
端口类似于门牌号,客户端可以通过IP地址找到对应的服务器端,服务器端有很多端口,每个应用程序对应一个端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,称为端口号。
字节序
字节序,即字节在电脑中存放时的序列与输入输出时的序列。
大端(Big endian)
地址低位存储值的高位,地址高位存储值的低位
例:0x01020304的存储方式
BE 01 02 03 04
小端(Little endian)
地址低位存储值的低位,地址高位存储值的高位
例:0x01020304的存储方式
LE 04 03 02 01