1.TCP/IP分层
1.1.应用层
1.2.传输层
1.2.1.TCP
1.2.2.UDP
1.3.网络层
1.4.链路层
2.互联网的地址
2.1.按IP地址格式分类
2.2.按目的地址分
3.域名系统
4.封装
5.分用
6.端口号
7.数据相关概念
1.TCP/IP分层
分层结构如下:
1.应用层:负责处理特定的应用层细节。包括:Telnet(远程登陆,端口号为23), FTP(文件传输协议,数据端口是20,控制端口是21), SMTP(简单邮件传输协议,端口号是25),SNTP(简单网络控制协议);
2 .传输层:主要功能是为两台主机上的应用程序提供端到端的通信,通过端口号识别两台主机上相对应程序进行通信。主要包括TCP(传输控制协议)和UDP(用户数据包协议);
- TCP协议: 是一种面向连接的传输层协议,确保为两台主机提供高可靠性的数据通信。他的任务是把来自应用程序的数据分成合适的小块传输给下面的网络层,确认接收到数据的分组。为数据库设置超时时钟,一旦超过该时间就重新发送数据。
- UDP协议:是一种面向无连接的传输层协议,为应用程序发送和接收数据报,只是将数据报从一台主机发送到另一台主机,但并不保证数据报能够到达另一端,任何必须的可靠性都必须由应用程序提供。UDP协议常用于分组数据较少或多播,广播通信以及视频通信等多媒体领域。
3.网络层:处理分组在网络中的活动,例如分组的选路。主要包括:IP协议(网际协议),ICMP协议(因特网控制报文协议),IGMP协议(因特网组管理协议);
- IP协议:负责基于IP地址转发数据包,不具有重发机制,是一种不可靠,无连接的传输协议,整个互联网能够通过把IP地址作为主机标识,跨越网络传送和接收数据包;
- ICMP协议:是IP协议的附属协议,IP层用它来与其他主机或路由器交换错误报文或其他重要信息,IP数据包在发送过程中发生异常导致无法到达目的端,则使用ICMP协议给发送端发送一个异常消息通知,该协议也可用来检查网络的健康状态。
- IGMP协议:它用来把一个UDP数据报多播到多个主机
4.链路层:处理与传输媒介相关的物理接口细节。主要包括:操作系统的设备驱动程序,计算机中对应的网络接口卡
2.互联网的地址
2.1.按IP地址分
互联网上的每个接口必须有一个唯一的IP地址,IP地址长度32bit,即4个字节,每个IP地址都由 标识位,网络号 和 主机号三部分组成。32位二进制数地址通常写成四个十进制数,每个十进制整数对应一个字节,这是“点分十进制表示法”。第一个十进制数即可区分IP地址类型:0~127 A类,128~191 B类,192~223 C类,224~239 D类,240~255 E类; 下面是五类不同的IP地址的结构:
A类地址:
- 十进制取值范围:0.0.0.0~127.255.255.255;
- 二进制取值范围:0(标识位)0000000(网络号) 00000000 00000000 00000000(主机号)~0(标识位)1111111(网络号) 11111111 11111111 11111111(主机号);
B类地址:
- 十进制取值范围:128.0.0.0 ~ 191.255.255.255
- 二进制取值范围:10(标识位)000000 00000000(网络号) 00000000 00000000(主机号) ~ 10(标识位)111111 11111111(网络号) 11111111 11111111
C类地址
- 十进制取值范围 : 192.0.0.0 ~ 223.255.255.255;
- 二进制取值范围 :110(标识位)00000 00000000 00000000(网络号) 00000000(主机号) ~ 110(标识位)11111 11111111 11111111(网络号) 11111111(主机号);
D类地址
- 十进制取值范围 : 224.0.0.0 ~ 239.255.255.255;
- 二进制取值范围 : 1110(标识位) 0000 00000000 00000000 00000000 00000000(多播组号) ~ 1110(标识位) 1111 11111111 11111111 11111111(多播组号);
E类地址
- 十进制取值范围 :240.0.0.0 ~ 255.255.255.255;
- 二进制取值范围 :11110(标识位) 000 00000000 00000000 00000000(保留位) ~ 11110(标识位) 111 11111111 11111111 11111111(保留位);
2.2按照目的地址分类
- 单播地址:目的端为单个主机;
- 广播地址:目的端是给定网络的所有主机;
- 多播地址:目的地址是同一组的所有主机;
3.域名系统
尽管可以通过IP地址识别主机上的网络接口,进而访问主机,但是我们习惯于使用便于记忆的主机名。域名系统(DNS)可以提供IP地址和主机名之间的映射信息,它是一个分布式的数据库。所以在应用程序中可以调用系统函数实现IP地址和主机名之间的转换。
4.封装
当应该程序使用TCP传输数据时,数据被送入到协议栈,然后逐个通过每一层只当被当作一串比特流送入网络。其中每一层都要增加一些首部信息,因为方便根据这些首部信息确认数据属于哪一层或哪个协议,下面是应用程序使用TCP传输数据的过程:
5.分用
分用:目的主机在链路层接收到以太网数据帧时,该数据就开始从协议栈中由底向上逐层上升,在每层都去掉该层的首部信息,并校验首部信息是否正确,该过程就是分用;
发送数据:从应用层到链路层逐层加数据包是封装;
接收数据:从链路层到应用层逐层解包是分用;
6.端口号
端口号是在运输层配合TCP或UDP协议使用的,使TCP或UDP能识别主机应用程序,脱离这两个协议端口号将毫无用处;
7.数据相关概念
- 包:TCP/IP协议中,每一层的数据都可以成为包;
- 帧(以太网数据帧):链路层包的单位;
- 数据包(IP数据报): 网络层以上包的单位,IP给链路层的数据包成为IP数据包;
- 段(TCP报文段):TCP数据包,TCP传递给IP的数据包称为TCP报文段;
- 消息:应用层的数据包;
参考资料:
《TCP/IP详解》