# 第 16 章:随堂复习与企业真题(网络编程)


# 一、随堂复习

# 1. 网络编程概述

  • 计算机网络:略
  • 网络编程的目的:直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯。
  • 需要解决的三个问题:
    • 问题 1:如何准确地定位网络上一台或多台主机
    • 问题 2:如何定位主机上的特定的应用
    • 问题 3:找到主机后,如何可靠、高效地进行数据传输

# 2. 要素 1:IP 地址

  • 使用具体的一个 ip 地址对应具体的一个互联网上的主机
  • IP 分类:
    • 角度一:IPv4、IPv6
    • 角度二:公网地址、私网地址(或局域网)
  • 使用 InetAddress 类表示 IP 地址
    • 实例化:getByName(String host) 、getLocalHost()
    • 常用方法:getHostName () 、getHostAddress ()

# 3. 要素 2:端口号

  • 用于区分同一台主机上的不同的进程
  • 不同的进程分配不同的端口号
  • 范围:0-65535

# 4. 要素 3:网络通信协议

  • 这里有两套参考模型
    • OSI参考模型 :模型过于理想化,未能在因特网上进行广泛推广
    • TCP/IP参考模型(或TCP/IP协议) :事实上的国际标准。
  • 在传输层中涉及到两个协议:TCP、UDP。二者的对比
    • TCP :可靠的连接(发送数据前,需要三次握手、四次挥手),进行大数据量的传输,效率低。
    • UDP :不可靠的连接(发送前,不需要确认对方是否在)、使用数据报传输(限制在 64kb 以内)、效率高。
  • TCP 的三次握手、四次挥手(了解)

# 5. TCP 网络编程

例题 1:客户端发送内容给服务端,服务端将内容打印到控制台上。

例题 2:客户端发送文件给服务端,服务端将文件保存在本地。

例题 3:从客户端发送文件给服务端,服务端保存到本地。并返回 “发送成功” 给客户端。并关闭相应的连接。

# 6. UDP 网络编程

简单的理解 UDP 的数据传输。

# 7. URL 编程

  • Java 后台:将写好的 Java 程序部署在 Tomcat 服务器。启动 Tomcat 服务器。

  • 前台:使用浏览器进行访问。需要使用 url。(HTML+CSS+JavaScript)

  • URL 的作用:定位互联网上某一资源的地址

  • URL 的格式:

http://192.168.21.107:8080/examples/abcd.jpg?name=Tom   ---> "万事万物皆对象"
应用层协议 ip地址       端口号  资源地址   参数列表
  • 使用 URL 实现数据的下载(了解)

# 二、企业真题

# 1. TCP 协议和 UDP 协议的区别(华 ** 为)

TCP(传输控制协议)和 UDP(用户数据报协议)是互联网中用于数据传输的两个主要的传输层协议。它们的区别如下:

  1. 连接方式:TCP 是基于连接的可靠协议,需要在通信前通过三次握手建立连接。而 UDP 不需要建立连接,可以直接发送数据包。

  2. 数据传输方式:TCP 是面向 字节流 的协议,将应用程序传来的数据拆分为小的数据段,并在确认收到所有数据后按照应用程序的要求进行重组。UDP 是面向 数据报 的协议,把数据打包成数据报,一次发送,一次接收。

  3. 可靠性:TCP 提供可靠性,利用 序号、确认应答、重传等机制 保证数据传输的可靠性。UDP 没有此类机制,传输数据时不保证可靠性。

  4. 效率:TCP 比 UDP 慢,因为 TCP 有较多的开销用于 维护连接和保证可靠性 ;UDP 比 TCP 快,因为不需要进行连接状态的维护及重传机制等操作。

  5. 使用场景:TCP 适用于 对数据可靠性要求较高 的环境,例如文件传输、电子邮件和网页浏览。UDP 适用于 实时性要求较高 而且丢失一些数据也没有太大的影响的环境,例如在线游戏和视频流媒体。

# 2. 简单说说 TCP 协议的三次握手与四次挥手机制 (* 科软)

TCP 协议的三次握手和四次挥手是 TCP 连接建立和断开过程中的重要步骤,分别如下:

  1. 三次握手
    a. 客户端向服务器发送 SYN 包(SYN=1,ACK=0),表示 请求建立连接
    b. 服务器收到客户端的 SYN 包后,回复一个 SYN 包(SYN=1,ACK=1),表示 同意连接 ,并通过 ACK 字段确认客户端的请求;
    c. 客户端收到来自服务器的 SYN-ACK 包后,再回复一个 ACK 包(SYN=0,ACK=1),表示 连接建立成功

  2. 四次挥手
    a. 客户端向服务器发送 FIN 包(FIN=1,ACK=0),表示 要关闭连接
    b. 服务器收到客户端的 FIN 包后,回复一个 ACK 包(ACK=1),表示 已经接收到关闭请求
    c. 服务器回复一个 FIN 包(FIN=1,ACK=1),表示服务器 已经准备好关闭连接
    d. 客户端收到服务器的 FIN 包后,再回复一个 ACK 包(ACK=1),表示 已经接受到关闭请求

这样,TCP 连接就成功地断开了。