网络编程
协议分层
- 物理层(Physical Layer):物理层负责传输比特流,它定义了传输介质、传输速率、传输距离等物理特性,例如以太网、WiFi等协议。
- 数据链路层(Data Link Layer):数据链路层负责将数据进行分帧,并进行差错检测和纠正,以保证数据的可靠传输。数据链路层还负责控制网络中的访问,例如以太网、PPP等协议。
- 网络层(Network Layer):网络层负责对数据进行寻址和路由选择,将数据包从源主机传输到目标主机。网络层还实现了拥塞控制和流量控制等功能,例如IP、ICMP、ARP等协议。
- 传输层(Transport Layer):传输层负责在应用程序之间建立可靠的连接,并提供可靠的数据传输服务。传输层还负责进行流量控制和拥塞控制,例如TCP、UDP等协议。
- 会话层(Session Layer):会话层负责建立、管理和终止应用程序之间的会话,例如RPC、NetBIOS等协议。
- 表示层(Presentation Layer):表示层负责将数据格式进行转换和编码,以便应用程序能够解释和理解数据,例如JPEG、ASCII等协议。
- 应用层(Application Layer):应用层负责提供网络服务和应用程序之间的接口,例如HTTP、FTP、SMTP、DNS等协议。
网络拓扑结构
网络拓扑结构、网络协议和网络设备是计算机网络基础知识中的三个重要概念,下面我来分别介绍一下。
网络拓扑结构是指计算机网络中各设备之间物理连接和逻辑关系的结构。常见的网络拓扑结构包括:
- 星型拓扑结构:所有设备都直接连接到中心节点,形成一个星形结构。
- 环型拓扑结构:所有设备连接成一个环形结构。
- 总线型拓扑结构:所有设备都连接到一个总线上。
- 树型拓扑结构:所有设备连接成一棵树状结构。
- 网状型拓扑结构:设备之间通过多个路径连接,形成一个网状结构。
网络协议
网络协议是计算机网络中设备之间通信的规范和标准。网络协议定义了设备之间通信的方式、格式和规范,包括 TCP/IP、HTTP、FTP、SMTP 等多种协议。不同的网络协议可以用于不同的应用场景,如 TCP/IP 协议用于互联网通信,HTTP 协议用于 Web 应用通信。
TCP协议(传输层)
TCP(Transmission Control Protocol)协议是计算机网络中最常用的协议之一,它是一种面向连接的、可靠的、基于字节流的传输协议。TCP 协议负责在网络中保证数据能够可靠地传输,确保数据能够按照正确的顺序传输,同时还能够检测和纠正数据传输中出现的错误。
TCP 协议的主要特点包括:
- 面向连接:在数据传输之前需要建立连接,传输完毕后需要释放连接。
- 可靠性:通过确认和重传机制,确保数据能够可靠地传输,避免数据丢失或损坏。
- 字节流传输:把数据看作是一个字节流,而不是分成多个数据包进行传输。
- 流量控制:通过滑动窗口协议,控制数据发送的速率,避免网络拥塞。
- 拥塞控制:通过拥塞窗口协议,控制数据发送的速率,避免网络拥塞。
TCP常见知识点
- 三次握手和四次挥手
TCP 协议在建立连接和关闭连接时,分别采用了三次握手和四次挥手的机制。三次握手指的是客户端向服务器发送 SYN 请求,服务器收到请求后回复 SYN-ACK,客户端收到后再回复 ACK,建立连接。四次挥手指的是客户端向服务器发送 FIN 请求,服务器收到后回复 ACK,然后服务器向客户端发送 FIN,客户端收到后回复 ACK,关闭连接。
三次握手:
第一次发送服务端收到表示客户端有发送能力。
第二次发送客户端收到表示客户端有发送能力和接收能力。
第三次发送服务端收到表示客户端有接收能力。
四次挥手:
第一次挥手,提醒服务端客户端要关闭了
第二次挥手,用于向客户端发送确认消息和传递服务器端已经接收完客户端传输的数据的消息。
第三次挥手,服务端也发出中断请求
第四次挥手,确认服务端的中断请求
2. TCP 滑动窗口协议
TCP 协议通过滑动窗口协议实现了流量控制,避免了网络拥塞。滑动窗口指的是接收方通过发送窗口和接收窗口来控制发送方的数据传输速率。发送方在发送数据时,不能超过接收方的窗口大小,接收方可以通过调整窗口大小来控制数据传输速度。
发送方在发送数据时,会将数据分成多个报文段进行传输,每个报文段都包含了一个序列号。
接收方通过发送确认消息来告诉发送方已经接收到哪些报文段,
同时将下一个期望接收的报文段的序列号发送给发送方,
发送方根据接收方的确认消息来决定继续发送哪些报文段,
如果没有确认将会重传。
3. TCP 拥塞控制
TCP 协议通过拥塞窗口协议实现了拥塞控制,避免了网络拥塞。拥塞窗口指的是发送方根据网络拥塞情况来控制发送数据的速率,避免网络拥塞。如果发现网络拥塞,发送方会减小拥塞窗口的大小,从而减缓数据的发送速率。
TCP 的拥塞控制分为四个阶段:
1. 慢启动阶段:在这个阶段,发送方将拥塞窗口的大小从 1 开始逐渐增加,
直到出现丢包的情况为止。每次接收到一个确认消息,拥塞窗口大小就会加倍,因此也称为指数增长。
1. 拥塞避免阶段:在这个阶段,发送方将拥塞窗口的大小逐渐增加,但是增长速度变得缓慢,
每次只增加一个 MSS(Maximum Segment Size,最大报文段长度)。
1. 快速重传阶段:在这个阶段,如果发送方接收到了三个重复的确认消息(接收方收到的包没变化),
就会立即重传对应的数据段,而不用等待超时。
1. 快速恢复阶段:在这个阶段,发送方将拥塞窗口的大小设为拥塞窗口的一半,并重新进入拥塞避免阶段。
4. TCP 可靠性
TCP 协议通过确认和重传机制实现了数据的可靠传输。发送方在发送数据时,会等待接收方的确认,如果没有收到确认,就会重传数据,确保数据能够被正确传输。同时,TCP 还会对数据进行排序,确保数据能够按照正确的顺序传输。
- TCP 头部格式
TCP 头部包括了源端口、目标端口、序列号、确认号、标志位、窗口大小等字段。标志位包括 SYN、ACK、FIN、URG、PSH、RST 等,用于控制 TCP 的连接建立和关闭过程。
IP协议
IP 协议:IP(Internet Protocol)协议是一种面向数据包的协议,用于在网络上传输数据包。它负责将数据包从源地址传输到目标地址,通过 IP 地址和子网掩码来标识网络中的设备和子网。
IP协议是在网络层协议中,它负责将数据包从源地址传输到目标地址,其中包括寻址和路由选择等功能。IP协议使用IP地址来标识网络中不同的主机和设备,这些地址可以唯一标识网络中的每一个节点。 -待写-
两者的关系
在TCP协议中,每个应用程序使用一个独立的端口号来标识自己,这个端口号可以唯一标识网络中的每一个应用程序。TCP协议使用IP地址和端口号的组合来标识网络中不同的应用程序,这个组合被称为套接字(socket)。
网络设备
- 路由器(Router):用于连接不同的网络,实现不同网络之间的数据传输和路由选择。
- 交换机(Switch):用于将数据包从一个端口传输到另一个端口,实现局域网内的数据传输和广播。
- 防火墙(Firewall):用于保护网络安全,防止非法入侵和攻击。
- 负载均衡器(Load Balancer):用于平衡网络负载,将网络流量分散到多个服务器上,提高网络性能和可用性。
- 网络存储设备(Network Storage Device):用于存储和管理网络数据,如网络硬盘和网络存储阵列等。
- 网络打印机(Network Printer):用于通过网络连接打印机,实现多台计算机共享打印机的功能。
- 无线接入点(Wireless Access Point):用于无线网络连接,使移动设备能够接入网络。
- 网络集线器(Hub):用于将多个计算机连接到同一个网络中,实现数据传输和共享。
- 网络电视盒(Network TV Box):用于通过网络连接电视机,实现在线视频播放和互联网电视功能。