TCP/IP笔记
1. 网络基础知识
-
计算机网络:WAN-广域网,LAN-局域网。
-
协议:简单说,就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”。TCP/IP协议是IP、TCP、HTTP等协议的集合。
-
通信协议中,通常会规定报文首部应该写入哪些信息、应该如何处理这些信息。相互通信的每一台计算机则根据协议构造报文首部、读取首部内容等,为了双方能正常通信,分组的发送方和接收方有必要对报文首部和内容保持一致的定义。
-
协议的理解
-
OSI 7层模型
理解:发送方从第七层到第一层由上至下按照顺序传输数据,而接收端则从第一层到第七层由下至上向每个上一级分层传输数据。每个分层上,在处理由上一层传过来的数据时可以附上当前分层的协议所必须的“首部”信息。然后接收端对收到的数据进行数据的“首部”与“内容”的分离,再转发给上一层,并最终将发送端的数据恢复为原状。 -
OSI 7层模型理解
(1)应用层:为应用程序提供服务并规定应用程序中通信相关的细节,包括文件传输、电子邮件等。
(2)表示层:将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式(就是将设备固有的数据格式转换为网络标准传输格式),主要负责数据格式的转换——利用表示层,将数据从“某个计算机特定的数据格式”转换为“网络通用的标准数据格式”后再发送出去,接收端收到数据后将这些数据按相反的格式恢复为本机的数据格式。
(3)会话层:负责建立和断开通信连接,以及数据的分割等数据传输相关的管理。
(4)传输层:确立连接与断开连接,负责重发(起着可靠传输的作用)。传输层为确保所传输的数据到达目标地址,会在通信两端的计算机之间进行确认,若数据没有到达,传输层会负责将数据重发。
注意:会话层负责决定建立连接和断开连接的时机,而传输层进行实际的建立和断开处理。
(5)网络层:将数据从发送端传输到目标地址,目标地址可以是多个网络通过路由器连接而成的某个地址,主要负责寻址和路由选择。
目标地址:是进行通信的网络中唯一指定的序号。只要这个目标地址确定了,就可以在众多计算机中选出该目标地址所对应的计算机发送数据。 TCP/IP中,网络层与传输层相互协作以确保数据包能够传送到世界各地,实现可靠传输。
(6)数据链路层:负责物理层面上互连的、节点之间的通信传输,将0、1序列划分为具有意义的数据帧传送给对端(数据帧的生成与接收)。
(7)物理层:负责0、1比特流(0、1序列)与电压的高低、光的闪灭之间的互换。将数据的0、1转换为电压和脉冲光传输给物理的传输介质,而相互直连的设备之间使用地址实现传输,这种地址成为MAC地址,也称为物理地址或硬件地址。MAC地址是为了识别连接到同一个传输介质上的设备。
-
传输方式
(1)面向有连接型:在发送数据之前,需要在收发主机之间连接一条通信线路,如果对端之间无法通信,就无法进行通讯。
(2)面向无连接型:不要求建立和断开连接,发送端可以在任何时候自由发送数据,接收端就需要时常确认是否收到了数据(如电子邮件,发快递)。因此,不需要确认对端是否存在,即使接收端不存在或无法接收数据,发送端也能将数据发送出去。
(3)分组交换:让连接到通信电路的计算机将所要发送的数据分成多个数据包,按照一定的顺序排序之后分别发送。
发送端主机将数据分组发送给路由器,路由器收到这些分组数据后,缓存到自己的缓冲区,然后再转发给目标主机。
-
地址
IP地址由主机号和网络号两部分组成。在同一个通信网络中不允许有两个相同地址的通信主体存在。
2. TCP/IP基础知识
-
TCP/IP协议族
-
TCP/IP与OSI模型
-
数据包首部
每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息。一般,为协议提供的信息为包首部,要发送的内容为数据。
- TCP/IP各层对邮件的收发处理例子
经过每个协议分层时,都必须有识别包发送端和接收端的信息。以太网使用MAC地址,IP使用IP地址,TCP/UDP使用端口号作为识别两端主机的地址。
3. IP协议
-
IP:网际协议,作用于网络层。网络层的主要作用是“实现终端节点之间的通信”,也称“点对点通信”。
-
IP分为三大作用模块,分别是IP寻址、路由(最终节点为止的转发)和IP的分包与组包。IP地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”,在TCP/IP通信中所有主机或路由器必须设定自己的IP地址。
-
路由控制:是指将分组数据发送到最终目标地址的功能。为了将数据包发送给目标主机,所有主机都维护着一张路由控制表,该表记录IP数据在下一步应该发给哪个路由器,然后IP包将根据这个路由表在各个数据链路上传输。
-
IP地址的定义
IP地址(IPV4)有32位正整数表示。将32位的IP地址以每8位为一组,每组以“.”隔开,再将每组转换成十进制数,比如:
2^8 2^8 2^8 2^8 10101100 00010100 00000001 00000001 2进制 10101100. 00010100. 00000001. 00000001. 2进制 172. 20. 1. 1 10进制 -
IP地址由“网络标识(网络地址)”和“主机标识(主机地址)”组成。相同段内相连的主机必须有相同的网络地址,IP地址的“主机标识”不允许在同一个网段内重复出现。因此,可以通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的IP地址都不会相互重叠。
-
IP地址的分类:A类、B类、C类以及D类,根据IP地址中从第1位到第4位的比特列对其网络标识和主机标识进行区分。
1)A类地址 A类IP地址是首位以“0”开头的地址。前8位是它的网络地址,用十进制表示:0.0.0.0~127.0.0.0是A类的网络地址,后24位是主机地址,因此,A类地址可容纳的主机地址上限为2^24-2个。
2)B类地址
B类IP地址是前两位为“10”的地址。前16位是它的网络地址,用十进制表示:128.0.0.1~191.255.0.0是B类的网络地址,后16位是主机地址,因此,B类地址可容纳的主机地址上限为2^16-2个。
3)C类地址
C类IP地址是前三位为“110”的地址。前24位是它的网络地址,用十进制表示:192.168.0.0~239.255.255.0是C类的网络地址,后8位是主机地址,因此,C类地址可容纳的主机地址上限为2^8-2个。
4)D类地址
D类IP地址是前四位为“1110”的地址。前32位是它的网络地址,用十进制表示:224.0.0.0~239.255.255.255是D类的网络地址,D类没有主机地址,常被用于多播。
注意:在分配IP地址中,要用比特位表示主机地址时,不可以全部为0或全部为1。因为全部为0在表示对应的网络地址或IP地址不可获知的情况下才使用,而全部为1的主机地址表示广播地址。因此,在分配IP地址过程中,要去掉这两种情况(这也是可容纳主机地址上限减2的原因)。
-
广播地址:用于在同一个链路中相互连接的主机之间发送数据包,将IP地址中的主机地址部分全部设置为1。
-
IP多播:用于将包发送给特定组内的所有主机。多播使用D类地址。
-
一个IP地址只要确定了分类,就确定了它的网络标识和主机标识。
例)
A类 11111111. 00000000. 00000000. 00000000 B类 11111111. 11111111. 00000000. 00000000 C类 11111111. 11111111. 11111111. 00000000 用“1”表示IP网络地址的比特范围,用“0”表示IP主机地址的比特范围。用十进制表示,则如下:
例)
A类 255. 0. 0. 0 B类 255. 255. 0. 0 C类 255. 255. 255. 0 -
子网掩码:是一个32位的数字,对应IP地址网络标识部分的位全部为“1”,对应IP地址主机标识部分的位全部为“0”。由此,一个IP地址不再受限于自己的类别,而是可以用这样的子网掩码自由地定位自己的网络识别长度。子网掩码必须是IP地址的首位开始连续的“1”。
-
路由控制:发送数据包时所使用的的地址是IP地址,然而仅仅有IP地址不足以将数据包发送到目标地址,还需要路由控制表。
路由控制表中记录着网络地址与下一步应该发送至路由器的地址。在发送IP包时,首先要确认IP包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将IP包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择一个最为吻合的网络地址。默认路由:标记为0.0.0.0或default。
本文参考:《图解TCPIP》。