关闭

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

标签: IP地址OSI参考模型TCPIP协议地址解析c语言
245人阅读 评论(0) 收藏 举报
分类:
1、IP地址
     每台计算机都需要一个IP地址以识别自己,IP地址由IP协议规定的32位的二进制表示,最新的IPV6协议将IP地址提升为128位,但还不能广泛应用。
     32位的IP地址主要分为前缀和后最两部分。前缀表示计算机所属的物理网络(网络号),后缀是主机号。根据网络号的不同,可以将IP地址分为A、B、C、D、E五类。其中ABC为基本类,D用于多播发送,E属于保留位。
                       表16.1  各类IP地址的范围
类型 范围
A(7位网络号,24位主机号),2^7=128=(1000 0000) 0.0.0.0~127.255.255.255
B(14位网络号,16位主机号),128+64=192=(1100 0000) 128.0.0.0~191.255.255.255
C(21位网络号,8位主机号),192+32=224=(1110 0000) 192.0.0.0~223.255.255.255
D,224+16=240=(11110 0000) 224.0.0.0~239.255.255.255
E 240.0.0.0~247.255.255.255
     特殊地址:
          (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)颁布的网络标准化参考模型。

层次 名称 功能
7 应用层(Application) 负责网络中应用与网络操作系统的联系
6 表示层(Presentation) 用于确定数据交换的格式,解决运用程序之间的数据格式上的差异
5 会话层(session) 是用户应用程序与网络层的接口,他能够建立与其他设备的连接,即会话,并进行管理
4 传输层(Transport) 提供会话层和网络层之间的传输协议
3 网络层(Network) 将传输的数据封包,然后由路由选择、分段组合等控制将信息传送到目标设备
2 数据链路层(Data Link) 修正传输过程中的错误信号,提供可靠的通过物理介质传输数据的方法
1 物理层(Physical) 利用传输介质为数据链路层提供物理连接,它规范了网络硬件的特性、规格和传输速度

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协议结构层次

TCP/IP协议 OSI参考模型
应用层(包含Telnet、FTP、SNTP协议) 会话层、表示层、应用层
传输层(包含TCP、UDP协议) 传输层
网络层(包含ICMP、IP、ARP等协议) 网络层
数据链路层 物理层和数据链路层
      (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位整数的高位先存格式。由于不同的计算机存放数据字节的顺序不同,这样发送数据后当接收到该数据时,也可能无法查看所接收到的数据。因此,在网络中不同的主机间进行通信时,要统一采用网络字节顺序。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9855次
    • 积分:325
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条
    文章分类