一:port
本质:端口号是一改字节16位的整数【0,65535】【0,2^16-1】
作用:端口号用来标识一个进程,告诉操作系统,当前这个数据要交给哪一个进程来处理
一个端口号只能被一个进程所占用,一个进程可以占用多个端口号
知名端口号【0,1023】:已经被一些知名的协议所使用
mysql:3306
oracle:1521
二:网络数据的五元组信息
源IP,源端口,目的IP,目的端口,协议
源IP地址:标识网络数据从哪台主机出发
源端口:标识网络数据从“源IP”对应的这台主机的哪个进程产生
目的IP:标书网络数据要去往哪一台主机
目的端口:当通过目的IP,找到目的主机之后,通过目的端口找到对应进程
协议:双方传输数据的时候,使用什么协议(一般指UDP/TCP)
三:网络字节序
小端字节序:低位放在低地址
大端字节序:低位放在高地址
主机字节序:主机本身的字节序,如果是大端,则主机字节序为大端,如果是小端,则主机字节序为小端
网络字节序:规定网络传输数据的时候采用大端字节序进行传输
四:主机字节序和网络字节序相互转换
主机字节序转换为网络字节序
ip:uint32_t
uint322_t htonl(uint32_t hostlong);
port:unit16_t
uint16_t htons(uint16_t hostshort);
网络字节序转换为主机字节序
ip:unit32_t
uint32_t ntohl(unit32_t netlong);
port:uint16_t
uint16_t ntohs(uint16_t netshort);
五:TCP和UDP协议特性和区别
UDP
无连接:UDP双方在发送数据之前,是不需要进行沟通的,只需要知道对方的ip和端口就好i(对方进程可能没有准备好)就可以发送
不可靠:不保证UDP数据是可靠的,有序的到达对方
面向数据报:UDP和应用层/网络层递交数据的时候,都是整条数据进行交付的
TCP
面向连接:TCP双方在发送数据之前会先建立连接(1.确保对方正常通信 2.沟通双方发送后续数据的细节(例如序号))
可靠传输:TCP保障传输的数据是可靠的有序的到达对端的
面向字节流:1.