关于知识点
知识点归纳
第十三章 TCP/IP和网络编程
- 13.1 网络编程简介
网络编程是指编写应用程序以实现计算机网络之间的通信和数据交换。网络编程涉及到一系列的技术和协议,包括套接字编程、网络协议(如TCP/IP、HTTP等)、分布式计算技术等。在网络编程中,开发者需要了解网络分层模型(如OSI模型)、网络设备、IP地址、端口等基本概念。
网络编程的主要目的是在不同的计算机之间实现数据的传输和交换,这需要通过套接字(Socket)来实现。套接字是一种应用程序与网络之间的接口,它允许应用程序发送和接收数据。套接字分为三种类型:流式套接口、数据报套接口和原始套接口。流式套接口提供了可靠的面向连接服务,实现了无差错、无重复的顺序数据传输;数据报套接口提供了无连接服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠、无差错;原始套接口允许对低层协议(如IP或ICMP)直接访问,主要用于新的网络协议实现的测试等。
网络编程的应用广泛,包括Web服务器、邮件客户端、即时通讯工具等。为了实现网络编程,开发者需要掌握相关的编程语言和库,如Java、C++、Python等。此外,还需要了解网络安全、性能优化、网络协议等方面的知识。
网络编程的应用广泛,是现代软件开发中不可或缺的一部分。
-
13.2 TCP/IP协议
-
13.3 IP主机和IP地址
- IP主机:
IP主机是指在互联网或其他网络中,具有独立IP地址的计算机或其他设备。每个IP主机都有一个唯一的IP地址,用于在网络中标识和定位该设备。IP地址是网络通信的基础,它相当于一台计算机的“门牌号”,用于指示数据包在网络中的传输路径。
- IP地址相关知识点:
-
IP地址的分类:根据IP地址的第一个字节(网络地址部分),IP地址分为以下五类:
A类:第一个字节范围为1-126,适用于大型网络,默认网络地址为192.0.0.0,子网掩码为255.0.0.0。
B类:第一个字节范围为128-191,适用于中型网络,默认网络地址为172.16.0.0,子网掩码为255.255.0.0。
C类:第一个字节范围为192-223,适用于小型网络,默认网络地址为192.168.0.0,子网掩码为255.255.255.0。
D类:第一个字节范围为224-239,用于组播,不允许分配给主机。
E类:第一个字节范围为240-255,保留用于科研实验。
-
IP地址的表示形式:IP地址通常用点分十进制表示,例如192.168.1.1。实际上,IP地址是一个32位的二进制数,分为四个8位二进制数(即四个字节)。
-
子网掩码:子网掩码用于将IP地址划分成网络地址和主机地址。子网掩码是一个32位的二进制数,用于屏蔽IP地址中的一部分位,以表示网络地址和主机地址。子网掩码和IP地址结合使用,可以实现网络的划分和管理。
-
默认子网掩码:根据IP地址的类别,默认子网掩码如下:
A类:255.0.0.0
B类:255.255.0.0
C类:255.255.255.0
-
IP地址的分配:IP地址由互联网编号分配机构(如IANA和各地区的RIRs)负责分配。在我国,IP地址的分配和管理主要由我国互联网络信息中心(CNNIC)负责。
-
私有IP地址和公共IP地址:私有IP地址是指在特定范围内(如10.0.0.0至10.255.255.255)分配给内部网络使用的IP地址。公共IP地址是指在互联网上公开可用的IP地址。私有IP地址可以减少公共IP地址的消耗,提高网络安全性。
-
IP地址的不足:随着互联网的快速发展,IPv4(32位)地址空间逐渐枯竭。为了解决这个问题,推出了IPv6(128位)地址空间,以提供更多的IP地址资源。然而,IPv6的普及和应用仍需时间。
- 13.4 IP协议
IP协议(Internet Protocol)是互联网中最基本的网络层协议,用于在不同网络之间传输数据。
-
IP地址:IP协议使用IP地址来唯一标识网络中的设备。IPv4地址由32位二进制数组成,通常以点分十进制表示形式(如192.168.1.1)呈现。
-
IP地址分类:根据IP地址的首个字节,IPv4地址被分为五个类别(A、B、C、D和E),每个类别适用于不同规模的网络。
-
子网掩码:IP地址结合子网掩码用于划分网络地址和主机地址。子网掩码屏蔽IP地址中的某些位,以确定网络号和主机号。
-
数据报文:IP协议以数据报文(Datagrams)的形式传输数据。每个数据报包含了源IP地址、目标IP地址、分片偏移、生存时间TTL等信息。
-
路由选择:IP协议使用路由选择算法决定数据报文的传输路径。路由选择的目标是确定最佳路径以将数据包从源主机传输到目的主机。
-
版本:IP协议有两个主要版本:IPv4和IPv6。IPv4是早期版本,地址空间有限,而IPv6拥有更广泛的地址空间,更好地支持当前和未来的网络需求。
-
分段与重组:当数据报文大于网络传输的最大尺寸时,IP协议会将大数据报文分段,并在目的主机处将分段重新组装成完整的数据报文。
-
IP地址分配与管理:IP地址由分配机构(如IANA、RIRs和ISP)分配和管理。在IPv4资源逐渐枯竭的情况下,IPv6技术的应用越来越受到重视。
- 13.5 IP数据包格式
- 13.6 路由器
- 13.7 UDP
UDP (User Datagram Protocol) 是一种无连接的传输层协议,它提供了一种简单的、无需建立连接的数据传输服务。
-
无连接的特性:UDP是一种无连接的协议,不会在通信前建立连接。这使得UDP具有低延迟和高效率的优势,但也意味着它不提供可靠性和排序保证。
-
面向数据报的传输:UDP以数据报文的形式传输数据,每个数据报文包含了源端口、目标端口、数据长度和校验和等信息。
-
简单性:UDP相对于TCP来说更简单,没有TCP那些复杂的连接管理和流量控制机制。
-
轻量级:UDP协议头部相对较小,不同于TCP那样有丰富的选项字段,这使得UDP在封装数据时开销较小。
-
适用场景:UDP适用于一些对实时性要求较高,可以容忍数据丢失的应用,比如音频/视频流传输、在线游戏、DNS查询等。
-
缺点:UDP不提供可靠性的数据传输,因此数据报可能会丢失、重复、失序。它也不提供拥塞控制,这意味着它对网络拥塞的反应比较差。
总的来说,UDP是一种轻量级、无连接、面向数据报的传输层协议。它具有高效性和实时性的优势,但在需要可靠性和顺序性的场景下,使用TCP可能更为合适。
- 13.8 TCP
TCP (Transmission Control Protocol) 是一种面向连接的、可靠的、基于字节流的传输层协议。
-
连接建立:TCP使用三次握手(Three-way Handshake)机制建立连接,确保双方都准备好进行数据传输。
-
数据传输:TCP使用字节流的形式传输数据,每个数据段包含序号、确认号、数据和校验和等信息。TCP保证数据的有序到达,如果数据包丢失或乱序到达,TCP会进行重传或丢弃。
-
流量控制:TCP使用滑动窗口机制进行流量控制,确保发送方不会发送过多的数据给接收方,避免接收方处理不过来。
-
拥塞控制:TCP使用各种算法进行拥塞控制,如慢开始、快重传、快恢复等,以避免网络拥塞。
-
可靠传输:TCP保证数据的可靠传输,如果数据包丢失或出错,TCP会进行重传,直到数据到达并确认。
-
应用场景:TCP适用于那些需要可靠数据传输、有序到达的场景,比如文件传输、邮件传输、网页浏览等。
总的来说,TCP是一种面向连接的、可靠的、基于字节流的传输层协议。它具有数据传输的可靠性、有序性和流量控制机制,但在实时性和效率要求高的场景下,使用UDP可能更为合适。
- 13.9 端口编号
- 13.10 网络和主机字节序
- 13.11 TCP/IP网络中的数据流
在TCP/IP网络中,数据流是指通过TCP协议传输的数据流。
-
面向连接的数据流:TCP是一种面向连接的协议,因此在进行数据传输前需要通过“三次握手”建立连接。一旦连接建立,数据可以在客户端和服务器之间以数据流的形式传输。
-
字节流传输:TCP将数据视作字节流进行传输,而不考虑消息的边界。因此,发送端发送的数据会被接收端按顺序组装,从而在接收端还原成原本的消息或数据。
-
数据分段:TCP会将数据流分割为一个个数据段(segment),并添加头部信息(TCP头),形成传输的最小单位。这些数据段将在网络上传输,然后在接收端重新组装成完整的数据流。
-
数据流控制:TCP通过滑动窗口机制进行流量控制。发送方会根据接收方的接收窗口大小来决定发送数据的速率,以避免发送方发送过多的数据导致接收方无法处理。
-
数据流重组:在接收端,TCP会根据序号将接收到的数据段进行重组,确保数据在接收端按照发送端的顺序重组并提供给应用程序。
-
数据流媒体传输:TCP协议也支持数据流媒体传输,例如音频、视频等流媒体数据可以通过TCP进行可靠性传输,尽管TCP的可靠性传输可能带来一些延迟,但它可以有效避免丢失和损坏,保证音视频的质量。
总的来说,TCP/IP网络中的数据流是通过TCP协议实现的,它是一种面向连接的、可靠的、基于字节流的数据传输方式,保证了数据的有序、可靠传输。
-
13.12 网络编程
- 13.12.1 网络编程平台
- 13.12.2 服务器—客户机计算模型
-
13.13 套接字编程
- 13.13.1 套接字地址
- 13.13.2 套接字API
-
13.14 UDP回显服务器—客户机程序
-
13.15 TCP回显服务器—客户机服务
-
13.16 主机名和IP地址
- 主机名:
-
主机名是指在网络上标识和识别设备的名称。例如,www.example.com是一个主机名。
-
主机名可以是人们容易理解和记忆的字符串,有助于我们识别和访问网络上的特定设备。
-
主机名通常需要解析为IP地址才能进行网络通信,这一过程称为域名解析(DNS解析)。
- IP地址:
-
IP地址是网络中各设备的唯一标识符,用于在网络中定位和识别设备。
-
IPv4地址由32位二进制数表示,通常以点分十进制的形式(如192.168.1.1)呈现。
-
IPv6地址则由128位二进制数组成,以冒号分隔的八个四位十六进制数呈现(如2001:0db8:85a3:0000:0000:8a2e:0370:7334)。
- 关系:
-
在互联网上,主机名和IP地址之间存在一一对应的关系,通常通过DNS(Domain Name System)协议进行解析和映射。
-
当我们使用主机名访问网站或其他网络服务时,首先会进行DNS解析,将主机名解析为对应的IP地址,然后才能进行通信。
总的来说,主机名和IP地址都是网络中用于标识和定位设备的重要概念,主机名是由人们命名和理解的字符串,IP地址是计算机网络中用于识别和寻址的数值标识。在网络通信中,它们之间相互转换和映射,有助于实现设备之间的定位和通信。
苏拉底挑战
问题1:IP主机和IP地址
问题2:网络编程
遇到问题以及实践过程截图
实践截图
UDP回显服务机—客户机程序
TCP回显服务器—客户机程序