分层

网络协议通常分为不同的层次进行开发,每一层分别负责不同分通信功能。

TCP/IP协议族分为四层

链路层:

与硬件相关,通常用来处理计算机中的网卡,设备驱动等。

####运输层:
有两个不同的传输协议— TCP(传输控制协议) 和 UDP(用户数据报协议)。
平时开发中与数据库交互的接口用到的就是运输层

####网络层:
处理分组在网络中的活动。IP协议,ICMP协议都是网络层。IP协议不可靠,传输不稳定,不一定能接收到而且可能是无序的。

####应用层:
任何TCP/IP都会实现这些应用程序,相当于是捆绑在TCP/IP上的程序

  1. Telnet远程登录
  2. FTP文件传输协议
  3. SMTP简单邮件传输协议
  4. 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