TCP-IP协议解析笔记 卷一:协议

最近工作之余有些时间,于是想系统的整理一下网络知识,所以选择从TCP-IP详解(共三卷卷一:协议;卷二:实现;卷三:TCP事务)开始。感兴趣的同学可以通过下面链接下载三卷电子版,已被不时之需。因为是读书笔记,可能不会写的很详细,一方面方便自己以后翻阅,另外希望对初学者有所帮助。
下载链接TCP-IP详解 共三卷(电子版)

一、概要简述
本阶段只做简单的概念描述,为后面针对性学习打个基础,有基础的可以跳过。

  1. TCP-IP 分层

TCP-IP起源于60年代末美国政府资助的一个分组交换网络研究项目,到90年代已发展成为计算机之间最常应用的组网形式。另外TCP-IP是一个开放且易维护的廉价(花很少的钱就可以维护)系统,因为它又被称作“全球互联网”或“因特网(internet )”的基础。
TCP-IP协议通常被认为是一个四层协议系统,即:应用层、运输层、网络层、链路层,每一层负责不同的功能:

名称 功能 例子
应用层 处理特定应用程序细节 应用程序如:Telnet、FTP、SMTP、SNMP
运输层 提供端到端的通信服务 TCP(传输控制协议)、UDP(用户数据报协议)
网络层 主要处理网络中的各种活动 IP协议(网际协议)、ICMP协议(Internet互联网控制报文协议)、IGMP协议(Internet组管理协议)
链路层 或称数据链路层(网络接口层)通常包括驱动程序和对应网卡,他们一起处理与电缆等物理接口细节 ARP、RARP

问题:那我们常说的OSI网络七层与TCP/IP四层协议又有什么关系呢?
在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型。一台计算机操作系统中的网络过程包括从应用请求(在协议栈的顶部)到网络介质(底部) ,OSI参考模型把功能分成七个分立的层次。下图表示了OSI分层模型。

名称 层级 功能描述 例子
第七层 应用层 包括标识通信伙伴、定义资源的可用性和同步通信,应用层并非由计算机上运行的实际应用软件组成,而是由向应用程序提供访问网络资源的API(Application Program Interface,应用程序接口)组成,这类应用软件程序超出了OSI模型的范畴。
第六层 表示层 表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息可以被另一个系统应用层识别。表示层的编码和转化模式包括公用数据表示格式、性能转化表示格式、公用数据压缩模式和公用数据加密模式。
第五层 会话层 会话层建立、管理和终止表示层与实体之间的通信会话。通信会话包括发生在不同网络应用层之间的服务请求和服务应答,这些请求与应答通过会话层的协议实现
第四层 传输层 传输层向高层提供可靠的端到端的网络数据流服务。传输层的功能一般包括流控、多路传输、虚电路管理及差错校验和恢复。 tcp、udp
第三层 网络层 网络层负责在源和终点之间建立连接。它一般包括网络寻径,还可能包括流量控制、错误检查等。 IP路由器
第二层 数据链路层 通过物理网络链路提供可靠的数据传输。不同的数据链路层定义了不同的网络和协议特征,其中包括物理编址、网络拓扑结构、错误校验、帧序列以及流控。
第一层 物理层 将信息编码成电流脉冲或其它信号用于网上传输 RS-232规范、10BASE-T的曼彻斯特编码以及RJ-45

那么OSI七层与TCP-IP四层对应关系又是什么呢?个人认为,OSI模型更像一个大而全的宏观上的协议系统,它包含了硬件相关和协议相关的定义。而TCP/IP更侧重与通信协议的核心描述,它并不包含物理层面的东西,因此可以把TCP-IP看成OSI的子集。它们的大致对应关系如下图
OSI七层与TCP/IP四层对应关系
2. IP地址和域名
互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址),IP地址长度为32bit。通常写成四个十进制的数,其中
每个整数对应一个字节,这种表示方法称作“点分十进制表示法( Dotted decimal notation)”。例如我的IP地址是:192.168.1.171。IP地址可分为五大类,如下图。通常我们只会使用A、B、C三类。
五类IP地址
不同类型的IP地址的起止范围见下表。

类别 范围
A类 0.0.0.0 到127.255.255.255
B类 128.0.0.0 到 191.255.255.255
C类 192.0.0.0 到 223.255.255.255
D类 224.0.0.0 到 239.255.255.255
E类 240.0.0.0 到 247.255.255.255

那大家可能会问,全球这么多地址是由谁来分配和管理的呢?答案就是互联网络信息中心( Internet Network Information
Centre),称作InterNIC。InterNIC只分配网络号,主机号的分配由系统管理员来负责。

尽管通过IP地址可以识别网络上的主机,但人们还是更喜欢给主机起个名字我们称之为域名。在TCP/IP领域里,DNS(域名系统)是一个分布式的数据库,它负责提供IP地址和域名的映射关系。

  1. 数据封装和分用
    当应用程序将数据通过UDP发送时,数据被送入协议栈,然后逐级分层打包,直到网络接口层数据被当作帧发送出去。见下图
    UDP数据包打包
    如果是TCP协议那么只会是UDP首部换成TCP首部,其他地方不变,后面我们会详细介绍各个头的封装格式,这里不做说明。

  2. MAC地址
    上面提到数据通过网络接口层将数据以帧的形式发送了出去,那么发送者是如何标识接收者,接收者又是如何知道发送者是谁的呢?答案就是MAC地址。在以太网帧头包含了发送者和接收者的信息,这个信息就是MAC地址。因此,以太网规定,所有接入网络的设备都必须有一个“网卡”,网卡其中的一个作用就是标识发送者和接收者的地址。
    什么是网卡?见下图
    网卡
    每块网卡出厂时都有唯一的ID,这个ID就是我们常说的MAC地址,它由48个二进制位构成,通常用12个十六进制数表示。笔者的MAC地址是:00:23:15:d4:24:11。前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。这样,有了MAC地址,就可以定位网卡和数据包的路径了。

  3. 端口号
    端口分为物理端口和逻辑端口。物理端口是用于连接物理设备之间的接口,逻辑端口是逻辑上用于区分服务的端口。TCP/IP协议中的端口就是逻辑端口,通过不同的逻辑端口来区分不同的服务。端口通过16bit进行编号,端口号只有整数,范围是从0 到65535。
    那么有人可能会问端口有什么作用呢?
    我们知道,一台服务器可以支持很多中服务,比如web服务、FTP服务、SMTP服务等,这些服务都可以通过一个IP地址来实现,但主机怎么区分这些服务呢?答案就是端口号。在网络服务中,是通过IP地址+端口号来区分不同的功能的。到1992年为止,知名端口号介于1~255之间。256~1023之间的端口号通常都是由Unix系统占用,以提供一些特定的Unix服务—也就是说,提供一些只有Unix系统才有的、而其他操作系统可能不提供的服务,IANA管理1~1023之间所有的端口号。
    我们可以通过命令查看系统端口号:

grep telnet /etc/services 
telnet		23/tcp
rtelnet		107/tcp				# Remote Telnet
rtelnet		107/udp
telnets		992/tcp				# Telnet over SSL
telnets		992/udp
tfido		60177/tcp			# fidonet EMSI over telnet

常用端口号见下表:

端口号 名称 注解
21/tcp FTP 文件传输协议
22/tcp SSH 安全登录、文件传送(SCP)和端口重定向
23/tcp Telnet Telnet 服务
25/tcp SMTP 简单邮件传输协议Simple Mail Transfer Protocol (E-mail))
69/udp TFTP 文件传输协议(Trivial File Transfer Protocol)
79/tcp finger 用于用户联系信息的 Finger 服务
80/tcp HTTP 超文本传送协议 (WWW)
88/tcp Kerberos Kerberos 网络验证系统
110/tcp POP3 Post Office Protocol (E-mail)
113/tcp auth 验证和身份识别协议(ident old identification server system)
119/tcp NNTP 用于 USENET 讨论系统的网络新闻传输协议(usenet newsgroups)
220/tcp IMAP3 互联网消息存取协议版本3
443/tcp HTTPS 安全超文本传输协议(securely transferring web pages)

猜你喜欢

转载自blog.csdn.net/qq_39440596/article/details/89363156