失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络

《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络

时间:2019-08-12 07:22:38

相关推荐

《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络

1、IP地址 每台计算机都需要一个IP地址以识别自己,IP地址由IP协议规定的32位的二进制表示,最新的IPV6协议将IP地址提升为128位,但还不能广泛应用。 32位的IP地址主要分为前缀和后最两部分。前缀表示计算机所属的物理网络(网络号),后缀是主机号。根据网络号的不同,可以将IP地址分为A、B、C、D、E五类。其中ABC为基本类,D用于多播发送,E属于保留位。 表16.1 各类IP地址的范围特殊地址: (1)网络地址:网络号不变,主机号全0 (2)广播地址:网络号不变,主机号全1 (3)回送地址:127.0.0.0表示回送地址,用于测试。 (4)本地地址:即私有地址,10.0.0.0/8;172.16.0.0/12;192.168.0.0/16 2、OSI七层参考模型 开放系统互联(Open System Interconnection,OSI),是国际标准化组织(ISO)颁布的网络标准化参考模型。

3、地址解析 所谓地址解析是指将计算机的协议地址解析为物理地址,即MAC(Medium Access Control)地址,又称为媒体访问控制地址。通常在网络上由地址解析协议(ARP)来实现地址解析。 解析过程如下:主机A,B要进行通信,A的ip为192.168.1.21,B的ip为192.168.1.23,主机B的IP地址被解析过程: (1)主机A从本地ARP缓存中查找IP为192.168.1.23对应的物理地址。 (2)主机A在ARP缓存中没有发现192.168.1.23映射的物理地址,将发送ARP请求帧(请求帧中包含A的物理地址和ip地址) (3)本地网络上的其他主机接收到请求帧后,检查是否与资金及的IP地址匹配,若果不匹配则丢弃。B发现与自己的匹配则将主机A的物理地址和IP地址添加到自己的ARP缓存中,然后B将自己的物理地址和IP地址发送到主机A,当A接收到主机B发来的信息,将以这些信息更新ARP缓存。 (4)当主机B的物理地址确定后,主机A就可以和主机B进行通信了。 4、域名系统 Internet管理机构采用在主机名后加上后缀名的方法标识一台主机,其后缀名被称为域名。例如COM为一级域名,表示商业组织。 5、TCP/IP协议 TCP/IP(Transmission Control Protocal/Internet Protocal,传输控制协议/网络协议)是互联网上最流行的协议。他能实现互联网上不同类型操作系统的计算机相互通信。TCP/IP协议将网络分为4层。 表16.2 RCP/IP协议结构层次

(1)TCP协议:传输协议(TCP)是一种提供克劳数据传送的通用协议,他是TCP/IP体系结构中传输层上的协议。在发送数据时,应用层的数据传输到传输层,家伙是哪个TCP首部,数据就构成了报文。报文就是网络层IP的数据,如果再加上IP首部,就构成了IP数据报。TCP协议的C语言数据描述如下: typedef struct HeadTCP { WORD SourcePort; //16位源端口号 WORD DePort; //16位目的端口 DWORD SequenceNo; //32位序号 DWORD ConfirmNo; //32位确认系列号 BYTE HeadLen //与Flag为一个组成部分,首部长度,占4位,保留6位,6位标识符,共16位 BYTE Flag; WORD WndSize; //16位窗口大小 WORD CheckSum; //16位校验和 WORD UrgPtr; //16位紧急指针 }HEADTCP; (2)IP协议 IP协议又称为网际协议。它工作在网络层,主要提供无链接数据报传输。IP协议不保证数据报的发送,但可以最大限度地发送数据。IP协议C语言的数据描述如下: typedef struct HeadIP { unsigned char headerlen:4; //首部长度,占4位 unsigned char version:4 //版本,占4位 unsigned char servertype; //服务类型,占8位,即一个字节 unsigned short totallen; //总长度,占16位 unsigned short id; //与idoff构成标识,共占16位,前3位是标识,后13位是片偏移 unsigned short idoff; unsigned char ttl; //生存时间 unsigned char proto; //协议,占8位 unsigned short checksum; //首部检验和。占16位 unsigned int sourceIP; //源IP地址,占32位 unsigned int destIP; //目的IP地址,占32位 } HEADIP; (3)ICMP协议 ICMP协议又称为网络控制报文协议。他负责网络上设备状态的发送和报文检查,可以将设备的故障信息发送到其他设备上。ICMP协议的C语言数据描述如下: typedef struct HeadICMP { BYTE Type; //8位类型 BYTE Code; //8位代码 WORD ChkSum; //16位校验和 }HEADICMP; (4)UDP协议 用户数据报协议(UDP)是一个面向无连接的协议,采用该协议,米昂个应用程序不需要先建立连接,它为应用程序提供一次性的数据传输协议。UDP协议不提供差错恢复,不能提供数据重传,因此该协议传输数据安全性略差。UDP协议C语言数据描述如下: typedef struct HeadUDP { WORD SourcePort; //16位源端口号 WORD DePort; //16位目的端口 WORD Len; //16位UDP长度 WORD ChkSum;//16位UDP校验和 }HEADUDP; 6、端口 TCP/IP协议提出l端口的概念,用于标识通信的应用程序。当应用程序(进程)与某个端口绑定后,系统会将收到的给该端口的数据送往该应用程序。端口是用一个16位的无符号整数值来表示的,范围为0~65535,低于256的端口被作为系统的保留端口,用于系统进程的通信,不在这一范围的端口号被称为自由端口,可以由进程自由使用。 7、嵌套字的引入 嵌套字(socket)存在于通信区域中,通信区域也称为地址族,主要用于将通过套接字通信的进程的共有特性综合起来。套接字通常只与同一区域的套接字交换数据。Windows Sockets只支持一个通信区域——AF-INET网际域,使用网际域协议族通信的进程使用该域。 8、网络字节顺序 基于Intel CPU的PC机采用低位先存的方式。为了保证数据的正确性,在网络协议中需要指定网络字节顺序,TCP/IP协议使用16位整数和32位整数的高位先存格式。由于不同的计算机存放数据字节的顺序不同,这样发送数据后当接收到该数据时,也可能无法查看所接收到的数据。因此,在网络中不同的主机间进行通信时,要统一采用网络字节顺序。

如果觉得《《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。