热门标签 | 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 方法关闭。


推荐阅读
  • 这是一份详细 & 清晰的计算机网络基础 学习指南
    前言计算机网络基础该是程序猿需掌握的知识,但往往会被忽略今天,我将献上一份详细&清晰的计算机网络基础学习指南,涵盖TCPUDP协议、Http协议、Socket等,希望你们会喜欢。目 ... [详细]
  • Linux数据链路层的包解析仅以此文作为学习笔记,初学者,如有错误欢迎批评指正,但求轻喷。一般而言,Linux系统截获数据包后,会通过协议栈,按照TCPIP层次进行解析,那我们如何 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 变相的实现connect的超时,我要讲的就是这个方法,原理上是这样的:1.建立socket2.将该socket ... [详细]
  • 下载完成之后解压提取jl1.0.0.1.jar这里写图片描述将jl1.0.0.1.jar拷贝到项目中,并添加到Library这里写图片描述4.源代码Tip:由于工程名 ... [详细]
  • The“travellingsalesmanproblem”asksthefollowingquestion:“Givenalistofcitiesandthedistancesb ... [详细]
  • 计算机网络四
    大三上结束之际,从网上找来一些关于计算机网络的知识作为总结,本文四篇笔记全部转自猪头任(博客地址:http:www.cnbl ... [详细]
  • 使用ffmpeg进行视频格式转换的简单例子2006-12-1623:12主要参考FFMPEG里面的apiexample.c以及output_example.c编写intmain(in ... [详细]
  • 服务器性能优化之网络性能优化
    hi,大家好,今天分享一篇后台服务器性能优 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文详细解析了vlan接口类型和划分的相关知识,包括access、trunk和hybrid接口类型的特点和功能,以及它们在数据包发送和接收过程中的处理方式。同时介绍了pvid的作用和使用方法,以及trunk接口在发送数据包时的处理规则。最后,还介绍了如何使所有vlan生效的方法。 ... [详细]
  • mysql oneproxy稳定吗_Mysql 中间件 oneProxy总结
    建议使用之前把官方的文档全部通读一遍这里提供一个我的网盘地址oneproxy百度网盘0.先对oneproxy有个大概的了解,知道他所处的位置1.MySQL服务器创建t ... [详细]
  • 互联网世界 9 种基本的商业模式
    互联网世界9种基本的商业模式一个商业模式是运行一个公司的方法;通过该模式的运作,一个公司能维持自己的生存,就是说,能有收益。商业模式意味着一个公司是如何通过在价值链中定位自己,从而获 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
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社区 版权所有