Skip to main content Link Menu Expand (external link) Document Search Copy Copied

TCP/IP协议

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)是一组网络通信协议,它定义了电子设备(如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。TCP/IP协议族分为四个层次:网络接口层、网络层、传输层和应用层。

网络接口层

  • 主要负责将IP数据报封装成适合在特定物理网络上传输的数据帧格式,并发送出去;或者从网络上接收物理帧,抽出IP数据报,交给网络层。

网络层

  • 负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫IP数据报,简称数据报。
  • 主要协议有:IP(网际协议)、ICMP(Internet控制报文协议)、IGMP(Internet组管理协议)、ARP(地址解析协议)、RARP(逆地址解析协议)。

传输层

  • 负责向两个主机中进程之间的通信提供服务。由于一个主机可以同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务,分用就是把运输层收到的信息分别交付上面应用层中相应的进程。
  • 主要协议有:TCP(传输控制协议)和UDP(用户数据报协议)。

TCP

  • TCP是面向连接的协议,提供可靠的、面向连接的运输服务。发送方和接收方在数据传输前必须先建立连接,数据传输结束后必须释放连接。
  • TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,这不可避免地增加了许多开销,如确认、流量控制、计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。

UDP

  • UDP是面向无连接的协议,提供不可靠的、无连接的服务。它使用尽最大努力交付,即不保证可靠交付,同时也不使用确认机制来确认是否到达。
  • UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话、实时视频会议等)。

应用层

  • 应用层是体系结构中的最高层。应用层直接为用户的应用进程提供服务。应用层协议定义的是应用进程间通信和交互的规则。不同的应用有着不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等。

TCP/IP协议族为互联网的基础通信架构提供了标准化的方法,使得各种硬件和软件能够通过网络进行通信。

HTTP协议

HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。HTTP指定了客户端(通常是Web浏览器)可能发送给服务器(通常是Web服务器)什么样的消息以及得到什么样的响应。HTTP协议是万维网WWW(World Wide Web)的数据通信的基础,也是Web浏览器和Web服务器之间的应用层协议。

HTTP协议的特点包括:

  1. 无连接:HTTP协议不需要在客户端和服务器之间建立持久的连接,每个请求都需要建立新的连接,服务器处理完请求并收到客户的应答后就断开连接。这种方式可以节省传输时间。
  2. 无状态:HTTP协议对事务的处理没有记忆能力,每次请求都需要提供完整的请求信息。服务器不会自动保存关于客户端的任何信息。
  3. 面向对象:HTTP协议可以传输任何类型的数据对象,如文本、图像、音频、视频等。
  4. 无阻塞:HTTP协议不会限制客户端的请求数量和大小,使得服务器可以处理大量的请求。
  5. 可缓存:HTTP协议允许客户端缓存服务器响应的内容,以提高响应速度和减少网络流量。

HTTP协议的工作原理主要基于客户机/服务器计算模型,包括四个步骤:

  1. 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。
  2. 请求:Web浏览器通过socket向Web服务器提交请求,请求包括请求的方法(如GET、POST等)、请求的URI(统一资源标识符)和协议的版本,以及包含请求修饰符、客户信息和内容的请求头。
  3. 响应:Web服务器接收并解析请求,然后返回响应。响应包括状态行、响应头、响应正文。状态行由HTTP协议版本号、状态码和状态码描述组成。
  4. 关闭连接:Web浏览器接收响应后,关闭连接。

HTTP协议的应用场景非常广泛,主要包括以下几个方面:

  1. 网页浏览:当我们访问一个网站时,浏览器会向服务器发送HTTP请求获取网页内容,然后呈现给我们。
  2. 文件上传和下载:当我们使用浏览器上传或下载文件时,也是通过HTTP协议进行的。
  3. API请求:许多应用程序之间的交互都是通过发送HTTP请求和接收HTTP响应来完成的。例如,当我们在浏览器中使用AJAX技术向服务器发送请求时,就是使用的HTTP协议。
  4. 物联网:在物联网中,设备之间可以通过HTTP协议进行通信。

HTTP协议的发展经历了多个阶段,从最初的HTTP/0.9到现在的HTTP/2和HTTP/3,每个版本都在不断地优化和改进,以更好地满足互联网的发展需求。

FTP协议

FTP(文件传输协议,File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议。它工作在OSI模型的第七层,即应用层,使用TCP传输而不是UDP,保证客户与服务器之间的连接是可靠的,而且是面向连接,为数据传输提供可靠保证。

FTP协议包括两个组成部分:FTP服务器和FTP客户端。FTP服务器是一个提供文件传输服务的计算机,可以是公共的或私有的,主要负责存储和共享文件。FTP客户端则是用户使用的软件,通过它可以连接到FTP服务器,并进行文件的上传和下载操作。

FTP的工作原理大致如下:

  1. 通信建立:客户端通过TCP/IP协议与服务器建立连接,默认使用端口21进行控制连接。
  2. 登录认证:客户端发送用户名和密码给服务器进行身份验证,如果验证成功,客户端获得访问权限。
  3. 目录浏览:客户端可以通过FTP命令列出服务器上的文件和目录。
  4. 文件上传:客户端通过FTP命令将本地计算机上的文件传输到服务器上。客户端将文件分成多个数据单元并通过数据连接通道传送给服务器,服务器接收数据并将其合并为文件。
  5. 文件下载:客户端通过FTP命令从服务器上下载文件。服务器将文件拆分为多个数据单元并通过数据连接通道传送给客户端,客户端接收数据并将其合并为文件。

FTP支持两种传输模式:主动模式和被动模式。在主动模式下,服务器使用一个固定的端口来建立数据连接;而在被动模式下,服务器会等待客户端建立数据连接。

FTP协议在网络环境中广泛应用于文件的上传和下载,特别是在开发网站时,经常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

总之,FTP协议凭借其稳定可靠的特点,在网络世界中扮演着重要的角色,为用户提供了方便、高效的文件传输手段。

DNS协议

在Linux系统中,本地DNS配置通常涉及编辑/etc/resolv.conf文件或设置网络配置文件(如/etc/network/interfaces/etc/sysconfig/network-scripts/ifcfg-<interface>,具体取决于你使用的Linux发行版)。以下是一个基本的步骤,用于在Linux系统中配置本地DNS:

  1. 确定你的网络接口: 首先,你需要知道你的网络接口的名称。你可以使用ip addrifconfig(在某些系统上可能需要先安装net-tools包)命令来查看。

  2. 编辑网络配置文件(可选): 如果你的系统使用网络配置文件来管理网络接口,你需要编辑相应的文件来设置DNS服务器。这些文件的位置和名称可能因Linux发行版而异。

    例如,在基于Debian的系统(如Ubuntu)上,你可能需要编辑/etc/network/interfaces文件或在/etc/netplan/目录下的YAML文件。在基于Red Hat的系统(如CentOS或Fedora)上,你可能需要编辑/etc/sysconfig/network-scripts/ifcfg-<interface>文件。

    在这些文件中,你可以添加或修改DNS1DNS2等行来指定DNS服务器的IP地址。

  3. 编辑/etc/resolv.conf/etc/resolv.conf文件是Linux系统用于解析域名的配置文件。你可以直接编辑这个文件来设置DNS服务器。但是,请注意,有些系统(特别是使用systemd-resolved或NetworkManager的系统)可能会自动管理这个文件,因此直接编辑可能不是最佳做法。

    如果你可以直接编辑/etc/resolv.conf,你可以添加或修改nameserver行来指定DNS服务器的IP地址。例如:

    nameserver 8.8.8.8
    nameserver 8.8.4.4
    

    这将设置Google的公共DNS服务器作为你的DNS服务器。

  4. 重启网络服务: 在修改配置文件后,你可能需要重启网络服务来使更改生效。这可以通过运行如sudo systemctl restart networking(在某些系统上可能不可用)或sudo systemctl restart NetworkManager(如果你使用NetworkManager)的命令来完成。

  5. 检查配置: 你可以使用nslookupdighost命令来测试你的DNS配置是否生效。例如,运行nslookup example.com应该能够解析example.com的IP地址。

请注意,具体的步骤可能因你的Linux发行版和版本而异。如果你遇到任何问题,请参考你的Linux发行版的文档或寻求社区支持。

SSH协议

SSH(Secure Shell)协议是一种加密的网络传输协议,用于在网络中安全地远程连接到其他计算机和设备。SSH协议通过使用加密技术创建安全的隧道,保障了数据在传输过程中的安全性和完整性。以下是关于SSH协议的一些关键信息:

  1. 工作原理:
    • 客户端和服务器建立连接:客户端向服务器发起连接请求。
    • 服务器回应并发送公钥:服务器回应并发送自己的公钥给客户端。
    • 客户端身份验证:客户端生成随机数,并使用服务器公钥对随机数进行加密。服务器使用私钥解密客户端发来的加密随机数。
    • 生成共享密钥:服务器和客户端根据随机数生成共享的对称加密密钥。
    • 数据传输和加密:客户端和服务器使用共享密钥对数据进行对称加密,加密的数据通过TCP连接传输。在数据传输过程中,密钥不会通过网络传输。
  2. 应用场景:
    • 远程登录:SSH可以通过安全通道远程登录到服务器,提供安全的shell访问和命令行操作。
    • 远程维护:管理员可以使用SSH远程访问和管理服务器,执行各种系统维护任务,如更新软件、配置网络等。
    • 文件传输:SSH提供了安全的文件传输机制,常用的工具有SCP(Secure Copy)和SFTP(SSH File Transfer Protocol)。
  3. 客户端工具:
    • 常用的SSH客户端有OpenSSH、PuTTY和SecureCRT等,这些工具用于与SSH服务器建立连接并进行远程操作。
  4. 优缺点:
    • 优点:SSH协议提供了更高的安全性,因为它允许用户通过加密通道传输数据。这意味着即使数据在传输过程中被截获,也无法被轻易解密。
    • 缺点:相比于HTTP协议,SSH协议的配置更为复杂,需要用户自行设置密钥对,并且需要在服务器端也进行相应的设置。

总的来说,SSH协议是一种强大而安全的网络传输协议,广泛应用于服务器管理、远程维护和文件传输等场景。

SSH配置

SSH的配置通常涉及对SSH服务器和客户端的设置,以确保远程连接的安全性和便利性。以下是一些关于SSH配置的基本步骤和注意事项:

  1. SSH服务器配置

    • 安装SSH服务器:大多数Linux发行版都自带OpenSSH服务器,但如果没有,你可以使用包管理器(如apt、yum或dnf)来安装。
    • 编辑SSH配置文件:SSH服务器的主要配置文件通常是/etc/ssh/sshd_config。你可以使用文本编辑器(如nano、vim或emacs)来编辑此文件。
    • 设置基本选项:在配置文件中,你可以设置各种选项,如端口号(默认为22)、允许的认证方法(如密码或公钥认证)、是否允许root用户登录等。
    • 重启SSH服务:在更改配置文件后,你需要重启SSH服务以使更改生效。这通常可以通过运行如sudo service ssh restartsudo systemctl restart sshd的命令来完成。
  2. SSH客户端配置

    • 安装SSH客户端:大多数Linux发行版都自带OpenSSH客户端,Windows用户可以使用如PuTTY或Windows Subsystem for Linux (WSL) 的工具来连接SSH服务器。
    • 使用SSH命令:在命令行中,你可以使用ssh命令来连接到SSH服务器。例如,ssh username@hostname命令将尝试使用用户名username连接到名为hostname的服务器。
    • 配置SSH密钥对:为了提高安全性,你可以使用SSH密钥对进行身份验证,而不是密码。这需要在你的计算机上生成一个公钥和一个私钥,并将公钥添加到SSH服务器的~/.ssh/authorized_keys文件中。
    • 配置SSH代理:如果你需要通过代理服务器连接到SSH服务器,你可以在SSH客户端配置文件中设置代理选项。
  3. 高级配置

    • 防火墙设置:确保你的防火墙允许SSH连接。在Linux上,你可以使用ufwiptables等工具来管理防火墙规则。
    • 日志记录:SSH服务器可以记录连接尝试和认证尝试的详细信息。你可以在配置文件中设置日志记录选项,以便在出现问题时进行调查。
    • 禁用不必要的服务:为了减少攻击面,你可以禁用SSH服务器上不必要的服务。例如,如果你不需要使用SFTP或SCP来传输文件,你可以禁用这些服务。
    • 定期更新和打补丁:保持你的SSH服务器和客户端软件更新到最新版本,以利用最新的安全功能和修复已知的安全漏洞。
  4. 测试和验证

    • 使用ping命令或其他网络工具来测试网络连接是否正常。
    • 尝试从另一台计算机连接到你的SSH服务器,以确保一切正常工作。
    • 检查SSH服务器的日志文件,以查看是否有任何错误或警告消息。

请注意,以上步骤和选项可能因你的具体环境和需求而有所不同。在进行任何更改之前,请务必备份你的配置文件,并仔细阅读相关文档以了解每个选项的含义和潜在影响。

Telnet协议

SIP协议

SSL/TLS协议

HTTP2 协议

HTTP/2(Hypertext Transfer Protocol version 2)是一种用于互联网通信的协议,是HTTP协议的进化版本,在性能和效率方面有了显著的改进。以下是关于HTTP/2协议的一些关键点:

  1. 二进制传输:HTTP/2采用二进制格式传输数据,而非HTTP 1.x的文本格式。二进制协议解析起来更高效,有助于提高传输效率。
  2. 多路复用:在HTTP/2中,同域名下所有通信都在单个连接上完成,消除了因多个TCP连接而带来的延时和内存消耗。这意味着单个连接可以承载任意数量的双向数据流,使性能有了极大提升。
  3. 头部压缩:HTTP/2使用了头部压缩技术,可以更有效地处理请求和响应头,进一步减少了传输的数据量。
  4. 服务器推送:HTTP/2引入了服务器推送功能,允许服务器主动向客户端推送资源,而无需等待客户端的请求。这有助于减少网络延迟,提高网页加载速度。
  5. 安全性:虽然HTTP/2本身并不强制要求使用HTTPS,但许多浏览器和服务器都选择在HTTP/2上使用HTTPS,以提供更高的安全性。

HTTP/2的优势主要体现在以下几个方面:

  1. 网页浏览:HTTP/2可以显著提高网页的加载速度和响应性能,使用户能够更快地浏览网页内容。
  2. 移动应用:移动设备通常具有有限的网络资源和处理能力,而HTTP/2的高效性和并发性可以在移动应用中发挥出更大的优势。
  3. 云服务:云服务通常需要处理大量的网络请求,而HTTP/2的高效性和并发性可以有效地提高云服务的性能和响应速度。

需要注意的是,要启用HTTP/2,你需要一个支持HTTP/2协议的Web服务器,并进行相应的配置和安装SSL/TLS证书。同时,你的客户端(如浏览器或移动应用)也需要支持HTTP/2协议才能享受到其带来的性能提升。

WebSocket 协议

WebSocket协议是一种在单个TCP连接上进行全双工通信的协议,它使得客户端和服务器之间的数据交换变得更加简单和高效。以下是关于WebSocket协议的一些关键点:

  1. 全双工通信:WebSocket允许客户端和服务器之间进行双向实时通信,这意味着服务器可以主动向客户端推送数据,而不需要客户端发起请求。
  2. 低延迟:相比传统的HTTP协议,WebSocket减少了通信的开销,从而实现了更低的延迟。这使得WebSocket非常适用于实时性要求较高的应用场景,如在线游戏、聊天应用等。
  3. 较少的控制开销:在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。相对于HTTP请求每次都要携带完整的头部,此项开销显著减少了。
  4. 实时性:由于WebSocket使用单个TCP连接实现全双工通信,因此它提供了实时通信,使服务器和客户端之间的通信速度更快。
  5. 保持连接状态:与HTTP不同的是,WebSocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。
  6. 更好的二进制支持:WebSocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。

WebSocket协议广泛应用于实时通信、在线游戏、股票行情等需要高实时性的应用场景。不过,WebSocket协议也有一些缺点,例如不是所有浏览器都支持,可能会面临安全隐患,需要服务器支持等。

请注意,为了创建WebSocket连接,需要通过浏览器发出请求,之后服务器进行回应,这个过程通常称为“握手”(handshaking)。握手成功后,客户端和服务器之间的连接将从HTTP协议切换到WebSocket协议。

SOCKS 协议

SOCKS协议(SOCKS: Protocol for sessions traversal across firewall securely)是一种防火墙安全会话转换协议,它提供一个框架,为在TCP和UDP域中的客户机/服务器应用程序能更方便安全地使用网络防火墙所提供的服务。SOCKS协议工作在OSI参考模型的第5层(会话层),使用TCP协议传输数据,因而不提供如传递ICMP信息之类的网络层网关服务。

SOCKS协议的主要应用场景包括以下几个方面:

  1. 科学上网:通过连接SOCKS代理服务器,用户可以访问网站,以及保护用户隐私和匿名上网等。
  2. 网络爬虫:在网络爬虫中,通过使用SOCKS代理服务器来隐藏真实IP地址,避免被网站封禁,提高爬取效率等。
  3. 游戏加速:在一些网络游戏中,用户可以使用SOCKS代理服务器来加速游戏连接和降低延迟。
  4. 跨区域访问:在一些地区或国家,由于政策或技术原因,用户无法直接访问某些网站或资源,可以通过连接SOCKS代理服务器来进行跨区域访问。

SOCKS协议的优点包括:

  • 支持异构网络间通讯,没有特定协议上的依赖。
  • 可以通过Socks设备上的随机鉴权,来实现一定水平的访问控制。

SOCKS协议的缺点可能包括实现难度较大,因为它是一种网络协议,需要专门的软件或硬件支持。

需要注意的是,使用SOCKS代理服务器需要谨慎,需要遵守法律法规,并注意保护个人隐私和网络安全。在配置和使用SOCKS协议时,需要了解相关的安全知识和技术细节,以确保网络通信的安全和可靠。