TCP/IP
要编写一个计算机网络通信的程序, 首先要确定程序之间通信所使用的协议, 协议就是计算机与计算机之间通过网络通信时实现达成的一种约定, 这种约定可以使不同厂商的设备, 不同的 CPU, 以及不同的操作系统组成的计算机之间只要遵循相同的协议就能实现通信。
TCP/IP 是用于因特网(Internet)的通信协议。它是对计算机必须遵守的规则的描述, 只有遵守这些规则, 计算机之间才能通信。
TCP/IP 内部
在 TCP/IP 中包含一系列用于处理数据通信的协议:
TCP - 传输控制协议
。TCP 用于从应用程序到网络的数据传输的控制, TCP 负责在数据传送之前将他们分割为 IP 包, 然后在他们到达的时候将这些数据包重组。IP - 网际协议
。IP 负责计算机之间的通信、因特网上发送和接收数据包。UDP - 用户数据报协议
。是一个简单的面向数据报的传输层的协议。ICMP(因特网消息控制协议)
。针对错误和状态, 用于在IP主机、路由器之间传递控制消息。DHCP(动态主机配置协议)
。针对动态寻址, 是一个局域网的网络协议, 使用UDP协议工作, 主要有两个用途: 给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
TCP 提供 IP 环境下的数据可靠传输, 它提供的数据包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说, 它是事先为所发送的数据开辟出连接好的通道, 然后再进行数据发送; 而 UDP 则不为 IP 提供可靠性、流控或差错恢复功能。一般来说, TCP 对应的是可靠性要求高的应用, 而 UDP 对应的则是可靠性要求低、传输经济的应用。
协议的分层(TCP/IP 四层、 OSI 七层)
通常说的 TCP/IP 是基于 TCP 和 IP 这两个最初的协议之上的不同的通信协议的一个大的集合。
网络协议可以分不同的层次进行开发, 每一层分别负责不同的通信功能, TCP/IP 协议族是一组不同层次上的多个协议的组合, 传统上讲, TCP/IP 是一个四层的协议, 而国际标准化组织指定了一个国际标准 - OSI 七层协议模型
, OSI 协议以 OSI 参考模型为基础, 制定了每个层的协议和每层之间接口相关的标准, 它们的关系如下图所示:
下面是一些常用的协议:
应用层
应用层的 HTTP(HyperText Transfer Protocol) 负责了 Web 服务器和 Web 浏览器之间的通信, HTTP 用于从 Web 客户端向 Web 服务器发送请求, 并从 Web 服务器向 Web 客户端返回内容。
图中没有列出 HTTPS(Hypertext Transfer Protocol Secure), HTTPS 是安全的 HTTP。HTTPS 经由 HTTP 进行通信, 但利用 SSL/TLS 来加密数据包, 使用于保护所有类型网站上的网页真实性,保护账户和保持用户通信,身份和网络浏览的私密性。
SSL(Secure Sockets Layer) 协议: 叫做安全套接字层。SSL 协议用于为安全的数据传输加密数据。
SMTP(Simple Mail Transfer Protocol): 简单邮件传输协议, 用于电子邮件的传输。
IMAP(Internet Message Access Protocol): 因特网信息访问协议, 用于存储和取回电子邮件。
POP(Post Office Protocol): 邮局协议, 用于从电脑邮件服务商向个人电脑下载电子邮件。最新版本为 POP3(Post Office Protocol - Version 3), 提供了 SSL 加密的 POP3 协议被称为 POP3S。
FTP(File Transfer Protocol): 文件传输协议, 负责计算机之间的文件传输。
SSH(Secure Shell): 安全外壳协议, 是一种加密的网络传输协议, 可在不安全的网络中为网络服务提供安全的传输环境。SSH 通过在网络中建立安全隧道来实现 SSH 客户端与服务器的连接。
网络层
ICMP(Internet Control Message Protocol): 因特网控制报文协议, 负责网络中的错误处理。
不同层的作用:
应用层: 为应用程序提供服务并规定应用程序中通信相关的细节。包括文件传输, 电子邮件, 远程登录(虚拟终端)等协议。
表示层: 将应用处理的信息转换为适合网络传输的格式, 或将来自下一层的传输数据转换为上层能够处理的格式。因此它主要负责数据格式的转换。具体来说, 就是将设备固有的数据格式转换为网络标准传输格式。不同设备对同一比特流解释的结果可能不同。因此, 使他们保持一致是这一层的主要作用、
会话层: 负责建立和断开通信连接(数据流动的逻辑通路), 以及数据的分割等数据传输相关的管理。
传输层: 起着可靠的传输作用。只在通信双方节点上进行处理, 而无需在路由器上处理。
网络层: 将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某个地址。因此这一层主要负责寻址和路由选择。
数据链路层: 负责物理层面上互连的、节点之间的通信传输。例如与 1 个以太网相连的 2 个节点之间的通信。将 0、1 序列划分为具有意义的数据帧传送给对端(数据帧的生成与接收)。
物理层: 负责 0、1 比特流(0、1 序列)与电压的高低、光的闪灭之间的互换。