分层
网络协议通常分为不同的层次进行开发,每一层分别负责不同分通信功能。
TCP/IP协议族分为四层
链路层:
与硬件相关,通常用来处理计算机中的网卡,设备驱动等。
####运输层:
有两个不同的传输协议— TCP(传输控制协议) 和 UDP(用户数据报协议)。
平时开发中与数据库交互的接口用到的就是运输层
####网络层:
处理分组在网络中的活动。IP协议,ICMP协议都是网络层。IP协议不可靠,传输不稳定,不一定能接收到而且可能是无序的。
####应用层:
任何TCP/IP都会实现这些应用程序,相当于是捆绑在TCP/IP上的程序
- Telnet远程登录
- FTP文件传输协议
- SMTP简单邮件传输协议
- SNMP简单网络管理协议
一个局域网内有两台主机,都运行ftp协议。其中涉及到哪些网络层?
图中是一个FTP客户端和一个FTP服务端.
下三层(运输层、网络层、链路层)一般都在操作系统中执行。所以这三层和应用层是完全分离的。
- FTP是一种应用层协议
- TCP是一种运输层协议
- IP是一种网络层协议
- 而以太网应用在链路层
这四种组成了TCP/IP协议族
网络接口层与应用层的区别
网络接口层负责处理通信媒介相关的细节(如以太网、令牌环网)
而应用层负责处理应用程序(如Telnet、FTP)
为什么要把网络层和运输层分开?区别是什么?
由于网络层提供的是一种不可靠的服务,它的目的是把分组从源结点送到目标结点。所以在某些有安全需求的应用程序中光靠网络层是不行的,这时候需要用到传输层。传输层采用了超时重发,发送端与接收端的确认分组等机制确保了传输的可靠性。
所以它们之间还是有不同之处的,运输层相较于网络层会更可靠。
TCPIP的分层
TCP
使用不可靠的IP服务,但是有可靠的传输服务。会经过确认,接收方会发送确认收到的消息,如果没收到会请求重发。
UDP
为应用程序接收和发送数据报,但是不可靠没有确定性。但是效率高,传输速度快,比方说语音视频流。
ICMP
是IP协议的附属协议,用来与其他主机或路由器交换错误信息
IGMP
是Internet组管理协议,用来把一个UDP数据报多发到其他主机
ARP(地址解析协议) 和 RARP(逆地址解析协议)
用来转换IP层和网络接口层使用的地址
互联网地址
IP地址总共有五类:
PS: ip地址实际是由32位2进制来表示
- A类:0开头,之后的7位是网络号,最后24位是主机号
- B类:10开头,之后的14位是网络号,最后16位是主机号
- C类:110开头,之后的21位是网络号,最后8位是主机号
- D类:1110开头,之后的28位是多播组号
- E类:11110开头,备用的
其中A、B、C类为我们经常遇到的ip地址。通过二进制分配好后再转成点分十进制展示给我们。
ipv4地址共有32bit
类型 | 网络号 | 范围 |
---|---|---|
A | 以0开头 | 0.0.0.0 到 127.255.255.255 |
B | 以10开头 | 128.0.0.0 到 191.255.255.255 |
C | 以110开头 | 192.0.0.0 到 223.255.255.255 |
D | 以1110开头 | 224.0.0.0 到 239.255.255.255 |
E | 以11110开头 | 240.0.0.0 到 247.255.255.255 |
ipv6地址共有128bit,首部为40字节
它们分为单播地址(给单个主机)、广播地址(指定网络上的所有主机)和多播地址(同一组内的所有主机)
域名系统
在TCP/IP领域中,域名系统(DNS)是一个分部的数据库,由它来提供主机名和IP地址之间的映射信息。
任何应用程序都可以通过库函数来查看通过ARP协议或者RARP协议解析郭的ip地址或主机名。
封装
TCP在传输过程中,经过的每一层都会为数据增加首部信息,过程如下:
端口号
TCP和UDP采用16bit的端口号来识别应用程序
####习题:
总共有多少个A类、B类、C类网络号
需以2进制为单位来计算。
A类网络地址范围中,第一字节的第一位必须是0,所以其网络地址范围是:
00000000 ~ 01111111 故为0~127。所以A类地址网络号应该为2^7减去127开头的环回测试地址,再减去全部为1(即网络号第一位不为0)的地址,共2^7-2=126个
同理:B类
2^14-2 = 16382
C类:
2^21-2 = 2097150
最终答案是2113658