TCP/IP协议、UDP协议及网络基础概念

news2024/11/18 15:46:29

网络程序设计编写的是与其他计算机进行通信的程序。Java已经将网络程序所需要的东西封装成不同的类,用户只要创建这些类的对象,使用相应的方法,即使不具备有关的网络知识,也可以编写出高质量的网络通信程序。

1.局域网与因特网

为了实现两台计算机的通信,必须用一个网络线路连接两台计算机。

服务器是指提供信息的计算机和程序,客户机是指请求信息的计算机或程序。网络用于连接服务器与客户机,实现两者间的相互通信。但有时在某个网络中很难将服务器和客户机区分开来,我们通常说的局域网(local area network,LAN),就是一群通过一定形式连接起来的计算机。它可以由两台计算机组成,也可以由同一区域内的成千上万台计算机组成。将LAN延伸到更大范围,这样的网络称为广域网(Wide Area Network,WAN)。我们熟悉的因特网,就是由无数的LAN和WAN组成的。

1.1 网络协议

网络协议规定了计算机之间连接的物理、机械(网卡与网线的连接规定)、电气(有效的电平范围)等特征,计算机之间的相互寻址规则,数据发送冲突的解决方式,长数据如何分段传送与接收等内容。就像不同国家有不同的法律一样,目前网络协议也有多种。下面简单介绍几个常用的网络协议。

(1)IP协议
IP是Internet Protocol的简称,是一种网络协议。Internet网络采用的协议是TCP/IP协议。Internet依靠TCP/IP协议,在全球范围内实现了不同硬件结构、不同操作系统、不同网络系统之间的互联。在Internet网络上存在着数以亿计的主机,每台主机都用网络为其分配的Internet地址代表自己,这个就是IP地址。到目前为止,IP地址用4个字节,也就是32位的二进制数来表示,称为IPv4。为了便于使用,通常取用每个字节的十进制数,并且每个字节之间用圆点隔开来表示IP地址,如192.168.1.1。现在人们正在试验用16个字节来表示IP地址,这个就是IPv6,但是IPv6还没有投入使用。

TCP/IP模式是一种层次结构,共分4层,分别为应用层、传输层、互联网层和网络层。各层实现特定的功能,提供特定的服务和访问接口,并具有相对的独立性,TCP/IP层次结构 如图所示:
在这里插入图片描述
(2)TCP与UDP协议

在TCP/IP协议栈中,有两个高级协议是网络应用程序编写者应该了解的,即传输控制协议(TCP,transmission control protocol)与用户数据报协议(UDP,user datagram protocol)。

TCP协议是一种以固连接为基础的协议,它提供两台计算机间可靠的数据传送。TCP可以保证从一端数据送至连接的另一端时,数据能够确实送达,而且抵达的数据的排列顺序和送出时的排列顺序相同。因此,TCP协议适合可靠性要求比较高的场合。就像拨打电话,必须先给对方拨号,等两端确定连接后,相互才能听到对方说话,也知道对方回应的是什么。

HTTP、FTP和Telent等都需要使用可靠的通信频道。例如,HTTP从某个URL读取数据时,如果收到的数据顺序与发送时不相同,可能就会出现一个混乱的HTML文件或者一些无效的信息。

UDP是无连接通信协议,不保证数据的可靠传输,但能够向若干个目标发送数据,或接收来自若干个源的数据。UDP以独立发送数据包的方式进行。这种方式就像邮递员送信给接收人,可以寄出很多信给同一个人,且每一封信都是相对独立的,各封信送达的顺序并不重要,收信人接收信件的顺序也不能保证与寄出信件的顺序相同。

UDP协议适合于一些对数据准确性要求不高但对传输速度和时效性非常高的网站,如网络聊天室、在线影片等。一些防火墙和路由器会设置成不允许UDP数据包传输,因此若遇到UDP连接方面的问题,应先确定所在网络是否允许UDP协议。

1.2 端口和套接字

一般而言,一台计算机只有单一的连到网络的物理连接,所有数据都通过此连接对内、对外送达特定的计算机,这就是端口。网络程序设计中的端口(port)并非真实的物理存在,而是一个假想的连接装置。端口被规定为一个在0~65535之间的整数。HTTP服务一般使用80端口,FTP服务使用21端口。假如一台计算机提供了HTTP、FTP等多种服务,那么客户机会通过不同的端口来确定连接到服务器的哪些服务上。

通常,0~1023之间的端口数用于一些知名的网络服务和应用,用户的普通网络应用程序应该使用1024以上的端口数,以避免端口号与另一个应用或系统服务所用端口冲突。

网络程序中的套接字(Socket)用于将应用程序与端口连接起来。套接字是一个假想的连接装置,就像插座一样可以连接电器与电线,如图所示。Java将套接字抽象化为类,程序设计者只需创建Socket类对象,即可使用套接字。

端口示意图:
端口
套接字示意图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何快速实现根因分析/业务大盘

Ideas Worth Spreading 写在前面的话 特别感谢 感谢在最早开发鱼骨图带领我前进的技术负责人-佳哥(总监)。他一丝不苟的技术态度、严密的逻辑和高要求(这里大家都懂的),让我成长。这里是他在语雀的博客,其…

(new online judge)1322蓝桥杯2017初赛 包子凑数

P1322 - [蓝桥杯2017初赛]包子凑数 - New Online Judge 题目分两步:(1)判断结果是否为INF;(2)如果不是INF,统计数量。考点是“数论gcd简单DP”。 1. 什么时候答案不是INF 什么时候答案不是INF…

ADSP21489之CCES开发笔记(六)

一、仿真调试CCES代码 1、导入21489的Demo代码 2、修改设计SS4SH存储代码,如红框部分 3、搭配USBi调试,修改如下代码部分 oSSnConfig.bSkipInitialDownload 0; //usbi调试时,设置为0,默认为1 oCommConfig.nSelectSPI SELECT_SP…

英文Essay写作中存在哪些门道?

刚进入英国学校学习的小伙伴,每次放假都要赶Essay。那么什么是Essay呢?Essay怎么写呢?今天我们就来讲讲Essay中的门道。 A little partner who has just entered a British school must catch up with Essay every holiday.So what is Essay?…

入门:树莓派装系统、亮机,无需外接显示器键盘鼠标(保姆级教程)

借鉴了:https://blog.csdn.net/qq_24211837/article/details/120255311 1.官网下载树莓派系统 https://www.raspberrypi.org/software/operating-systems/ 安装后页面还是比较柔和的 2.格式化SD卡 首次入门,还是先学习前辈的方法进行操作 下载格式…

如何自定义代码生成器(下)

4.2 编码 4.2.1 常量类 package freemarker.constant;public class TemplateConstant {//实体类模板public static final String entityTemplate "templates/Entity.ftl";//Mapper模板public static final String mapperTemplate "templates/Mapper.ftl&quo…

k8s教程(12)-pod 全自动调度

文章目录01 引言02 Deployment & RC2.1 功能2.2 举例03 文末01 引言 声明:本文为《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》的读书笔记 在前面的博客《k8s教程(11)-pod调度概述》&…

【2022秋线上作业-第5次-第11-13周】选择题

2-1 下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是:B 解析: 后序遍历dbca 所以d前驱为null,d后继为b,c没有孩子,前驱为b,后继为a,a有左右孩子。…

拓扑排序板子练习

目录 一、前言 二、拓扑排序板子 三、题目:拓扑顺序 1、上链接 2、基本思路 3、代码 (1)C(AC) (2)python(AC) 四、题目:可达性统计 1、上链接 2、…

C++线程创建的方式和使用

进程与线程 进程 简单的可以认为是一个程序执行的过程。进程就是活跃的程序,在内存中运行,占用系统的资源。线程 线程也叫轻量级进程,通常一个进程包含若干个线程。线程可以利用进程所拥有的资源。在引入线程的操作系统中,通常都…

关于软件文档写作

关于软件文档写作目录概述需求:设计思路实现思路分析1.业务逻辑2.代码表达3.形式归纳4.方式和工具参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better resul…

JS模块化—CJSAMDCMDES6-前端面试知识点查漏补缺

本文从以时间为轴从以下几个方面进行总结JS模块化。从无模块化 > IIFE > CJS > AMD > CMD > ES6 > webpack这几个阶段进行分析。 历史 幼年期:无模块化 方式 需要在页面中加载不同的js,用于动画,组件,格式化…

【软件测试】一个边界值事故,领导leader心里苦季度奖金没了还被罚3K......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 项目组长&#xff1…

java类的练习--下面给出一个根据雇员类型利用多态性完成

java类的练习–下面给出一个根据雇员类型利用多态性完成… 题目 ​ 下面给出一个根据雇员类型利用多态性完成工资单计算的程序。定义一个类Employee作为超类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、Piece…

顶级“Redis学习笔记”,缓存雪崩+击穿+穿透+集群+分布式锁,NB了

如果你是一位后端工程师,面试时八成会被问到 Redis,特别是那些大型互联网公司,不仅要求面试者能简单使用 Redis,还要深入理解其底层实现原理,具备解决常见问题的能力。可以说,熟练使用 Redis 就是后端工程师…

超140支爆款B站恰饭,2022年B站双11战报来了!

- 导语 从0到3.06亿月活,从“与世无争”到今天手持高粘性、高活跃的用户参战双十一,在B站的品牌们有了更成熟的营销模式。 2022年双十一已经落下帷幕,在B站全面拥抱双十一的火热氛围下,有哪些品牌做到了声量、销量双丰收&#x…

【毕业设计】深度学习人脸表情识别系统 - python

文章目录0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码4 最后0 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! &#x1f5…

基于 BERT 实现的情感分析(文本分类)----概念与应用

文章目录基于 BERT 的情感分析(文本分类)基本概念理解简便的编码方式: One-Hot 编码突破: Word2Vec编码方式新的开始: Attention 与 Transformer 模型四方来降: 超一流预处理模型 BERT 诞生BERT 实现情感分析数据预处理并创建数据集定义网络模型定义训练函数与评估函数设置损失…

AVL树的插入(C++实现)

1. 概念 AVL树(Adelson-Velsky and Landis Tree)于1962年被提出,是计算机科学中最早被发明的平衡二叉查找树。AVL树得名于它的发明者G. M. Adelson-Velsky和Evgenii Landis。 在AVL树中,任一节点对应的两棵子树的最大高度差为1&…

大一新生HTML期末作业 个人网页王嘉尔明星介绍网页设计与制作

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…