1.0 Tcp / IP 背景介绍
上世纪70年代,随着计算机的发展,人们意识到如果想要发挥计算机的更大作用,就要讲世界各地的计算机连接起来。
但是简单的连接时不够的,因为计算机之间无法沟通。因此设计一种通用的交流语言时必不可少的,所以TCP/IP协议就诞生了。
TCP/IP是 传输协议和网络协议的简称,定义了电子设备如何接入互联网,以及数据如何在它们之间传输的标准。
TCP/IP不是一个协议,是一个协议族的统称。包含了IP协议,ICMP协议,TCP协议,以及HTTP,FTP,POP3协议等。网络中的计算机都是通过这种协议来互联。
网络协议栈架构
IP地址
网络上的节点都有一个独立的IP地址,通常IP地址是由32bit的数字,被.分成4组。有了IP地址就可以连接互联网中的另一个计算机。
在Linux系统中,使用ifconfig -a来查看自己的IP地址
域名
用12位组成的IP很难记住,在实际应用的时候,一般不用记住IP地址,互联网给每一个IP起了一个别名,习惯上称作域名。
域名和计算机的IP地址相对应,把这种对应关系存储在域名系统DNS中,用户只需记住域名就可以和指定的计算机进行通信了。
常见的域名包括com net 和 org三中顶级域名后缀,除此之外每个国家有自己的专属域名后缀(我国的域名后缀为cn)
可以使用nslookup或者ping来查看域名对应的IP
MAC地址
MAC地址也叫做物理地址/硬件地址,用来定义互联网中设备的位置。
在TCP/IP层模型中,网络层管理IP地址,数据链路层负责MAC地址。因此每个网络位置会有一个专属的IP地址,每个主机会有一个专属于它MAC地址。
端口号
IP地址是用来发现和查找网络中的地址,不同的程序之间利用端口来识别。一个IP端口可以有65536个。
服务器的默认程序一般都是通过人们所熟知的端口号来识别的。例如,对于每个 TCP/IP 实现来说,SMTP(简单邮件传输协议)服务器的 TCP 端口号都是 25
,FTP(文件传输协议)服务器的 TCP 端口号都是 21
,TFTP(简单文件传输协议)服务器的 UDP 端口号都是 69
。任何 TCP/IP 实现所提供的服务都用众所周知的 1-1023
之间的端口号。这些人们所熟知的端口号由 Internet 端口号分配机构(Internet Assigned Numbers Authority, IANA)来管理。
常用协议对应端口号:
- SSH 22
- FTP 20 和 21
- Telnet 23
- SMTP 25
- TFTP 69
- HTTP 80
- SNMP 161
- Ping 使用ICMP,无具体端口号
封装和分用
封装:当应用程序发送数据的时候,数据在协议层次中 自顶向下通过每一层,每一层都会对数据增加一些首部或者尾部信息,这样的信息称之为协议数据单元(PDU),在分层协议系统里,在指定的协议层上传送的数据单元,包含了该层的协议控制信息和用户信息。
- 物理层(一层)PDU指数据位(Bit)
- 数据链路层(二层)PDU指数据帧(Frame)
- 网络层(三层)PDU指数据包(Packet)
- 传输层(四层)PDU指数据段(Segment)
- 第五层以上为数据(data)
分用:当主机收到一个数据帧时,数据就从协议层底向上升,通过每一层时,检查并去掉对应层次的报文首部或尾部,与封装过程正好相反。