1.概述
1.1 分层
网络协议通常通过不同的层次进行开发,每一层分别负责不同的通信功能。一个协议簇,如TCP/IP通常是一组不同层次上的协议的组合。TCP/IP通常被认为是一个四层的协议系统,如下图所示。
每一层负责不同的功能:
(1)链路层:有时也被称为数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。他们一起处理与电缆的物理接口细节。
(2)网络层:也被称为互联层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议中,网络层协议包括IP,ICMP(网络控制报文协议),IGMP(网络组管理协议)
(3)传输层:主要为主机上的应用程序提供端到端的通信。包括TCP,UDP.
(4)应用层:负责处理特定应用程序细节。不同的TCP/IP协议都会实现如下几种应用协议:Telnet,FTP,SMTP,SNMP协议。
互联网上运行FTP通信的两个主机通信过程涉及的协议:
通过路由器连接的两个网络中主机的通信:
1.2 网络中主机的地址与域名系统
1.2.1 ip地址分类
1.2.2 域名系统
域名系统DNS是一个分布的数据库,提供IP地址和主机名之间的映射。具体的信息在后面描述。
1.3 封装
当应用程序用TCP传输数据时,数据被送入协议栈中,然后逐个通过每层直到当被做一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还需要增加尾部信息)。该过程如下图所示。
其中TCP传给IP的数据单元被成为tcp报文段或TCP段。IP传给网络接口层的数据包成为IP数据报。通过以太网传输的比特流成为帧。
1.4 分用
当目的主机收到一个以太网数据帧时,数据就要开始从协议栈中从底向上上升,同时去掉各个协议加上的报文首部。每层协议都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程成为分用。
1.5 端口
tcp,udp采用16bit的端口号来识别应用程序。在/etc/services文件中声明了常用服务的端口号。
dan@ubuntu:~$ vi /etc/services
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, officially ports have two entries
# even if the protocol doesn't support UDP operations.
#
# Updated from http://www.iana.org/assignments/port-numbers and other
tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
ftp 21/tcp
fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
nameserver 42/tcp name # IEN 116
whois 43/tcp nicname
tacacs 49/tcp # Login Host Protocol (TACACS)
tacacs 49/udp
re-mail-ck 50/tcp # Remote Mail Checking Protocol
re-mail-ck 50/udp
domain 53/tcp # Domain Name Server
domain 53/udp
mtp 57/tcp # deprecated
tacacs-ds 65/tcp # TACACS-Database Service
......
1.6 tcp/ip实现 、应用编程接口
既成事实标准的tcp/ip协议软件实现来自伯克利的加利福利亚大学的计算机系统研究小组。
使用TCP/IP协议的应用程序通常采用两种应用编程接口API: Socket(有时称为Berkeley socket,表明是从伯克利版发展而来的) 和 TLI(运输层接口:transport layer interface)。
2. 链路层
链路层主要有三个目的:1)为IP模块发送和接收IP数据包;2)为ARP 协议发送请求和接收应答;3)为RARP 协议发送请求和接收应答
TCP/IP协议支持多种不同的数据链路层协议,包括:以太网(csma/cd:带冲突检测的载波真听多路接入)、令牌环网、FDDI(光纤分布式数据接口)
2.1 以太网和IEEE 802封装
以太网封装格式:
3. IP
IP提供的是不可靠、无连接的数据报传输服务。其不可靠的意思是它不能保证IP数据报能成功到达目的地。如果发生某种错误,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息给信源端(谁发送ICMP发?)