前言
在编程过程中,总是会免不了需要网络方面知识,特别是TCP/IP协议,若了解,会在编程过程中产生潜移默化的影响和益处,因此有必要进行学习。
概述
分层
TCP/IP
是一组不同层次上的多个协议的组合,其通常被认为是一个四层协议系统。
- 链路层:也称为数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。
- 网络层:处理分组在网络中的活动,如分组的选路。
- 运输层:为两台主机上的应用程序提供端到端的通信,
TCP
高可靠,UDP
不可靠。 - 应用层:处理特定的应用程序细节,应用层不关心下三层的具体细节。
在网络层的
IP
协议并不提供任何可靠性保证,其只是尽可能的将分组从源节点送到目的节点;而TCP
层则在不可靠的IP
层上提供了可靠的运输层,其采用超时重传、发送和接收端到端的确认分组等机制保证可靠传输。
TCP/IP分层
TCP
和UDP
都采用了IP
作为网络层协议。UDP
为应用程序发送和接收数据报
(指从发送方传输到接收方的一个信息单元)。ICMP
是IP
协议的附属协议,IP
层用其与其他主机或路由器交换错误报文和其他重要信息,其也可直接被应用程序使用,如Ping
、Traceroute
都使用了ICMP
。IGMP
为Internet
组管理协议,用来把一个UDP
数据报多播到多个主机。ARP
(地址解析协议)和RARP
(逆地址解析协议)是某些网络接口(以太网、令牌环网)使用的特殊协议,用来转换IP
层和网络接口层使用的地址。
互联网的地址
- A类地址范围从
0.0.0.0
到127.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
到255.255.255.255
。 - 多接口主机具有多个IP地址,每个接口对应一个IP地址。
域名系统
DNS
是一个分布式数据库,由它提供IP地址和主机名之间的映射关系,如将www.baidu.com
映射为14.215.177.39
。
封装与分用
- 应用程序使用
TCP
发送数据,数据被送入协议栈中,然后逐个通过每层直到被当作一串比特流送入网络,其中每层对收到的数据都要增加一些首部信息(尾部信息),TCP
传给IP
的数据单元称作TCP报文段
;IP
传给网络接口层的数据单元称作IP数据报
;通过以太网传输的比特流称作帧
(长度必须在46-1500字节之间)。 UDP
数据与TCP
数据基本一致,但UDP
传给IP
的信息单元称作UDP
数据报,而且UDP
首部长为8
字节。IP
首部会加入标识表明数据数据哪一层(TCP、UDP、ICMP、IGMP),具体会存入长度为8 bit
的值(1表示ICMP,2表示IGMP,6表示TCP,17表示UDP)。TCP
和UDP
使用16 bit
的端口号表示不同的应用程序,源端口号和目的端口号分别存入报文首部中。- 以太网的帧首部也会加入
16 bit
的帧类型域指明生成数据的网络层协议。 - 分用与封装是逆过程,封装是一层层加信息,分用是一层层去掉信息。
端口号
FTP服务器
的TCP
端口号为21
,Telnet服务器
的TCP
端口号为23
,TFTP服务器
的端口号为69
,任何TCP/IP
实现所提供的服务的端口号都是从1~1023
之间。- 大多数
TCP/IP
实现给临时端口分配1024~5000
之间的端口号。
总结
通过本文可知,
TCP/IP
协议族分为四层,其中网络层和运输层最为关键,网络层提供点到点的服务,运输层提供端到端的服务。