概述:
网络编程主要的一项因素就是地址,地址包括IP地址、端口号两项因素;另一项主要的因素是数据,数据是指协议(通俗点讲,就是数据格式,有http协议、tcp协议 和 udp协议)
- tcp协议:面向字节流(连接),就好像A给B打电话(B立刻就会收到电话),B同意两人即可连接。TCP的优点是传送的数据无差错,不丢失,不重复,且有序到达。TCP只支持一对一通信。(适用于传输精细的数据)TCP首部开销是20字节。TCP逻辑通信信道是全双工的可靠信道。
- udp协议:面向报文,就好像A给B发信息(B可能不会立刻就收到),B之后能看到信息。UDP协议的优点是尽最大努力交付。而UDP支持一对一、一对多、多对一、多对多等多种交互通信(适用于传输数据量较大的数据:例如视频通话)UDP首部开销只有8字节。UDP是不可靠信道。
端口号的作用:一台拥有IP地址的主机可以提供多种服务,比如WEB服务、FTP服务、SMTP服务等。通过“IP地址+端口号”来区分不同的服务,端口提供一种访问通道。
字节序:
字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。
字节序分为小端字节序(Little endian)和大端字节序(Big endian)
Linux下采用的是LE
网络编程采用的是BE
以数据0x01020304以及地址&4000&4001&4002&4003为例:
BE:
LE与之存储地址相反即是。
大端字节序:数据从低到高地址安放(高序字节放在存储起始位置)
小端字节序:数据从高到底地址安放(低序字节放在存储起始位置)