热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网络编程面试题详解

IP地址和端口号1)IP地址用来标志网络中的一个通信实体的地址。通信实体可以是计算机,路由器等。2)IP地址分类IPV4:32位地址,以点分十进制表示,如192
  1. IP 地址和端口号
    1)IP 地址
    用来标志网络中的一个通信实体的地址。通信实体可以是计算机,路由器等。
    2)IP 地址分类
    IPV4:32 位地址,以点分十进制表示,如 192.168.0.1
    IPV6:128 位(16 个字节)写成 8 个 16 位的无符号整数,每个整数用
    四个十六进制位表示,数之间用冒号(:)分开,如:
    3ffe:3201:1401:1280:c8ff:fe4d:db39:1984
    3)特殊的 IP 地址
    127.0.0.1 本机地址
    192.168.0.0--192.168.255.255 私有地址,属于非注册地址,专门为组
    织机构内部使用。
    4)端口:port
    IP 地址用来标志一台计算机,但是一台计算机上可能提供多种应用程序,
    使用端口来区分这些应用程序。 端口是虚拟的概念,并不是说在主机上
    真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用程
    序。 端口范围 0---65535,16 位整数
    5)端口分类
    公认端口 0—1023 比如80端口分配给WWW,21端口分配给FTP,
    22 端口分配给 SSH,23 端口分配给 telnet,25 端口分配给 smtp
    注册端口 1024—49151 分配给用户进程或应用程序
    动态/私有端口 49152--65535
    6)理解 IP 和端口的关系
    IP 地址好比每个人的地址(门牌号),端口好比是房间号。必须同时指定
    IP 地址和端口号才能够正确的发送数据
    IP 地址好比为电话号码,而端口号就好比为分机号。
  2. 介绍 OSI 七层模型和 TCP/IP 模型
    OSI(Open System Interconnection),开放式系统互联参考模型 。是
    一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为了 7 层。每一层
    都有相关、相对应的物理设备,比如常规的路由器是三层交换设备,常规的
    交换机是二层交换设备。OSI 七层模型是一种框架性的设计方法,建立七层
    模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的
    功能就是帮助不同类型的主机实现数据传输。它的最大优点是将服务、接口
    和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系
    统不同的网络之间实现可靠的通讯。
    TCP/IP 协议是Internet 最基本的协议、Internet 国际互联网络的基础,
    主要由网络层的 IP 协议和传输层的 TCP 协议组成。TCP/IP 定义了电子设
    备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了 4 层
    的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。
    ISO 制定的 OSI 参考模型的过于庞大、复杂招致了许多批评。伴随着互
    联网的流行,其本身所采用的 TCP/IP 协议栈获得了更为广泛的应用和认可。
    在 TCP/IP 参考模型中,去掉了 OSI 参考模型中的会话层和表示层(这两层
    的功能被合并到应用层实现)。同时将 OSI 参考模型中的数据链路层和物理
    层合并为主机到网络层。
  3. TCP 协议和 UDP 协议的比较
    TCP 和 UDP 是 TCP/IP 协议栈中传输层的两个协议,它们使用 IP 路由功能
    把数据包发送到目的地,从而为应用程序及应用层协议(包括:HTTP、SMTP、
    SNMP、FTP 和 Telnet)提供网络服务。
    TCP 的 server 和 client 之间通信就好比两个人打电话,需要互相知道
    对方的电话号码,然后开始对话。所以在两者的连接过程中间需要指定端口
    和地址。
    UDP 的 server 和 client 之间的通信就像两个人互相发信。我只需要知
    道对方的地址,然后就发信过去。对方是否收到我不知道,也不需要专门对
    口令似的来建立连接。具体区别如下:
    1)TCP 是面向连接的传输。UDP 是无连接的传输
    2)TCP 有流量控制、拥塞控制,检验数据数据按序到达,而 UDP 则相
    反。
    3)TCP 的路由选择只发生在建立连接的时候,而 UDP 的每个报文都要
    进行路由选择
    4)TCP 是可靠性传输,他的可靠性是由超时重发机制实现的,而 UDP
    则是不可靠传输
    5)UDP 因为少了很多控制信息,所以传输速度比 TCP 速度快
    6)TCP 适合用于传输大量数据,UDP 适合用于传输小量数据
  4. 什么是 Socket 编程
    Socket 编程的定义如下:
    所谓 socket 通常也称作"套接字",用于描述 IP 地址和端口,是一个通
    信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
    我们开发的网络应用程序位于应用层,TCP 和 UDP 属于传输层协议,
    在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接
    字来进行分离。
    套接字就像是传输层为应用层开的一个小口,应用程序通过这个小口向
    远程发送数据,或者接收远程发来的数据;而这个小口以内,也就是数据进
    入这个口之后,或者数据从这个口出来之前,是不知道也不需要知道的,也
    不会关心它如何传输,这属于网络其它层次的工作。
    Socket 实际是传输层供给应用层的编程接口。传输层则在网络层的基
    础上提供进程到进程问的逻辑通道,而应用层的进程则利用传输层向另一台
    主机的某一进程通信。Socket 就是应用层与传输层之间的桥梁
    使用 Socket 编程可以开发客户机和服务器应用程序,可以在本地网络
    上进行通信,也可通过 Internet 在全球范围内通信。
    生活案例 1 如果你想写封邮件发给远方的朋友,如何写信、将信打包,
    属于应用层。信怎么写,怎么打包完全由我们做主;而当我们将信投入邮筒
    时,邮筒的那个口就是套接字,在进入套接字之后,就是传输层、网络层等
    (邮局、公路交管或者航线等)其它层次的工作了。我们从来不会去关心信
    是如何从西安发往北京的,我们只知道写好了投入邮筒就 OK 了。
    生活案例 2:可以把 Socket 比作是一个港口码头,应用程序只要将数
    据交给 Socket,就算完成了数据的发送,具体细节由 Socket 来完成,细节
    不必了解。同理,对于接收方,应用程序也要创建一个码头,等待数据的到
    达,并获取数据。
  5. 简述基于 TCP 和 UDP 的 Socket 编程的主要步骤
    Java 分别为 TCP 和 UDP 两种通信协议提供了相应的 Socket 编程类,
    这些类存放在 java.net 包中。与 TCP 对应的是服务器的 ServerSocket 和客
    户端的 Socket,与 UDP 对应的是 DatagramSocket。
    基于 TCP 创建的套接字可以叫做流套接字,服务器端相当于一个监听器,
    用来监听端口。服务器与客服端之间的通讯都是输入输出流来实现的。基于
    UDP 的套接字就是数据报套接字,• 两个都要先构造好相应的数据包。
    基于 TCP 协议的 Socket 编程的主要步骤

服务器端(server):
1. 构建一个 ServerSocket 实例,指定本地的端口。这个 socket 就是
用来监听指定端口的连接请求的。
2. 重复如下几个步骤:
a. 调用 socket 的 accept()方法来获得下面客户端的连接请求。通过
accept()方法返回的 socket 实例,建立了一个和客户端的新连接。
b. 通过这个返回的 socket 实例获取 InputStream 和
OutputStream,可以通过这两个 stream 来分别读和写数据。
c. 结束的时候调用 socket 实例的 close()方法关闭 socket 连接。
客户端(client):
1.构建 Socket 实例,通过指定的远程服务器地址和端口来建立连接。
2.通过 Socket 实例包含的 InputStream 和 OutputStream 来进行
数据的读写。
3.操作结束后调用 socket 实例的 close 方法,关闭。
UDP
服务器端(server):
1. 构造 DatagramSocket 实例,指定本地端口。
2. 通过 DatagramSocket 实例的 receive 方法接收
DatagramPacket.DatagramPacket 中间就包含了通信的内容。
3. 通过 DatagramSocket 的 send 和 receive 方法来收和发
DatagramPacket.
客户端(client):
1. 构造 DatagramSocket 实例。
2. 通过 DatagramSocket 实例的 send 和 receive 方法发送
DatagramPacket 报文。
3. 结束后,调用 DatagramSocket 的 close 方法关闭。


推荐阅读
  • Spring框架下发送嵌入图片邮件时遇到的技术挑战与解决方案
    在Spring框架中发送嵌入图片的HTML格式邮件时,常遇到技术挑战。一种有效的解决方案是在邮件内容中直接使用``标签来引用图片。此外,还可以通过MimeMessageHelper类的addInline方法将图片作为内联资源添加到邮件中,确保图片能够正确显示。这种方法不仅提高了邮件的可读性,还增强了用户体验。 ... [详细]
  • Panabit应用层流量管理解决方案
    Panabit是一款国内领先的应用层流量管理解决方案,提供高度开放且免费的专业服务,尤其擅长P2P应用的精准识别与高效控制。截至2009年3月25日,该系统已实现对多种网络应用的全面支持,有效提升了网络资源的利用效率和安全性。 ... [详细]
  • 本文介绍了如何查看PHP网站及其源码的方法,包括环境搭建、本地测试、源码查看和在线查找等步骤。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 基于Linux系统的Kickstart自动化服务器部署方案
    本文针对企业需求,提出了一种基于Linux系统的Kickstart自动化服务器部署方案。该方案旨在通过无盘批量安装操作系统,提高企业IT基础设施的部署效率。Kickstart是一种利用Anaconda工具实现服务器自动化安装的技术,能够显著简化和加速操作系统的安装过程。通过详细的实施规划,本文介绍了Kickstart的工作原理及其在实际部署中的应用,为企业提供了高效的自动化部署解决方案。 ... [详细]
  • Nginx入门指南:从零开始掌握基础配置与优化技巧
    Nginx入门指南:从零开始掌握基础配置与优化技巧 ... [详细]
  • 端口转发(Port Forwarding)类似于服务重定向,许多路由器中也称其为虚拟服务器(Virtual Server)。通过合理配置端口转发,可以实现外部网络对内部网络中特定设备和服务的高效访问,从而提高通信效率和灵活性。此外,正确设置端口转发还能增强网络安全,确保只有授权的流量能够进入内网,有效防止未授权访问和潜在威胁。 ... [详细]
  • 1、TCPIP 是个协议组,从下往上可分为:网络接口层、网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP ... [详细]
  • 公司计划部署邮件服务器,考虑到已有域名,决定自行搭建内部邮件服务器。经过综合考量,最终选择在Linux环境中进行搭建,并记录了相关配置和实践过程。本文将详细介绍Postfix的基本设置步骤和实践经验,帮助读者快速掌握邮件服务器的搭建方法。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • 构建高效能服务器系统需要综合考虑硬件和软件配置。除了选择性能优越的计算机设备和高速网络连接外,还需要关注操作系统、安全防护、数据备份与恢复等关键环节。合理的资源配置和优化措施能够确保服务器系统的稳定性和高效性。 ... [详细]
author-avatar
张骞2502860155
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有