1.1 前言
近期对TCP/IP有了兴趣.但是看了大概20几章后,回头发现忘得七七八八了,打算从头在看一遍,索性就做个笔记吧,方便日后复习
这个系列的文章如果有时间会持续更新下去的.
1.2 分层
TCP/IP是一个协议族,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统。
每一层负责不同的功能:
- 链路层:有时也称作数据链路层,或者网络接口层,通常包括操作系统中的设备驱动程序和计算机对应的网络接口卡。它们一起处理与电缆的物理接口细节。
- 网络层: 有时也称作互联网层,处理分组在网络中的活动,例如分组在的选路。在TCP/IP协议族中,网络层协议包含IP协议(网际协议),ICMP协议(互联网控制报文协议), 以及IGMP协议(Internet组管理协议)。
- 运输层:主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个相互不同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
- TCP为两台主机提供可靠性的数据通信。它所做的工作包括把应用程序所交给它的数据分成合适的小块交给下面的网络层,确认接收到分组的,设置发送最后确认分组超时时钟等。由于运输层提供了可靠性的端到端的通信,因此应用层可以忽略所有这些细节。
- UDP则为应用层提供了一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证数据包能到达另一端。任何必须的可靠性必须由应用层来提供。
- 应用层:负责特定的应用程序细节。几乎各种不同的TCP/IP都会实现提供下面这些通用的应用程序:
- Telent:远程登陆
- FTP:文件传输协议
- SMTP:简单文件传输协议
- SNMP:简单网络管理协议
在TCP/IP协议族中,网络层提供的是一种不可靠的服务。也就是它只是尽可能快的把分组从源结点送到目的结点,但是不提供任何可靠性的保证。而在另一方面,TCP在不可靠的的IP层提供了一个可靠的运输层。为了提供这种可靠的服务,TCP采用了超时重传 发送和接受端到端的确认分组机制。
网桥和路由器的区别: 网桥是在链路层上对网络互连,而路由是在网络层上对网络互连
1.3 TCP/IP的分层
- TCP和UDP是两种著名的运输层协议,二者都使用IP作为网络层协议。
- UDP为应用程序发送和接受数据报。一个数据报是指从发送方传输到接收方的一个信息单元。但是与TCP不同的是UDP是不可靠的,它不能保证数据报能安全无误的到达目的地。
- IP是网络层协议的主要协议。TCP和UDP中的每组数据都通过端系统和每个中间路由器中的IP层在互联网中传输。
- ICMP(互联网报文控制协议)是IP的附属协议。IP用它来与其它主机或路由器交换错误报文和其它重要信息。
- IGMP(互联网组管理协议)。它用来把一个UDP数据报多播到多个主机上。
- APR(地址解析协议)和RARP(逆地址解析协议)是某些网络接口使用的特殊协议,用来转换IP层和网络接口层使用的地址。
1.4 互联网的地址
-
互联网上每个接口必须有一个唯一的Internet地址(也称作IP地址),IP地址长度是32bit,Internet并不采用平面形式的地址空间,如1、2、3等。IP地址具有一定的结构,5类不同的IP地址如下图所示。
- 这些32的地址通写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称作''点分十进制表示法'',例如B类地址: 140.252.13.33。
- 区分各类地址的最简单的方法是看它第一个十进制整。图1-3列出了各类地址的起止范围,其中第一个十进制整数用加黑表示。
多接口主机具有多个IP地址,其中每个接口对应一个IP地址。
- 由于互联网上的每个接口必须有一个唯一的IP地址,因此必须要有一个管理机构为接入的互联网分配IP地址。这个管理机构就是互联网络信息中心(Internet Network Information Center),简称interNIC。interNIC只分配网络号。主机号的分配由系统管理员来分配。
有三类IP地址,单播地址(目的为单个主机)、广播地址(目的端为给定网络上的所有主机)、多播地址(目的端为同一组所有主机)。
1.5域名系统
通过IP地址可以识别主机的网络接口,进而访问主机,但是使用主机名访问是比较常见的,域名系统(DNS)是一个分布式数据库,用它来提供IP地址和主机名之间的映射。
1.5 端口号
TCP和UDP采用16bit的端口号来识别应用程序。
服务器一般是通过知名端口号来识别的。
例如:对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telent服务器的TCP端口号都是23....。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名的端口号由Internet号分配机构(Internet Assigned Numbers Authority, IANA) 来管理
客户端通常对它所使用的端口号并不关心,只需要保证该端口号在本机上唯一的 就可以了。客户端口号又称作临时端口号,这是因为它通常只是在用户运行改客户程序时才存在,而服务器只要主机开着,服务就运行。
临时端口号一般在1024~5000之间。