ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

网络编程入门

2022-01-19 10:02:24  阅读:130  来源: 互联网

标签:协议 入门 ip 编程 网络 TCP 连接 端口号 客户端


        无论是B/S还是C/S架构,都是离不开网络的支持的。

        网络编程,就是在一定的协议下,实现两台计算机通信的程序。

一、网络通信协议

        通信协议是计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守,最终完成数据交换。

        TCP/IP协议:传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛的协议。定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,并采用了4层分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求。

二、协议分类

        通信的协议是比较复杂的,java.net中包含的类和接口,它们提供低层次的通信细节。可以直接使用这些类和接口,来专注于网络程序开发,而不考虑通信细节。

        java.net包中提供了两种常见的网络协议(TCP、UDP)的支持:

          TCP:传输控制协议(Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,提供了两台计算机之间可靠无差错的数据传输。

        三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠。

        第一次握手,客户端向服务器端发出连接请求,等待服务器确认

        第二次握手,服务端向客户端回送一个响应,通知客户端收到了连接请求

        第三次握手,客户端再次向服务器端发送确认信息,确认连接。

         完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛,例如下载文件、浏览网页等。

        UDP:用户数据包协议(User Datagram Protocol)。UDP协议是一个面向无连接的协议。传输数据时,不需要建立连接,不管对方服务端是否启动,直接将数据、数据源和目的地都封装在数据包中,直接发送。每个数据包的大小限制在64k以内。是不可靠协议,因为无连接,所以传输速度快,但是容易丢失数据。例如视频会议、qq聊天。

三、网络编程三要素

        协议、IP地址、端口号

        IP地址指互联网协议地址(Internet Protocol Address),俗称ip。ip地址用来给一个网络中的计算机设备做唯一的编号。假如我们把“个人电脑”比作“一台电脑”的话,那么ip地址就相当于电话号码。

        ipv4:32位的二进制数,通常被分为4个字节,都是0~255之间的十进制整数,那么最多可以表示42亿个。

        ipv6:网络地址资源有限,使得ip分配紧张,为了扩大地址空间,拟通过ipv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,表示成ABCD:EF01:2345:6789:ABCD:EF01:2345:6789。

        端口号:网络的通信本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如果说ip地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。是用两个字节表示的整数,取值范围是0-65535。其中,0-1023之间的端口号用于一些知名的网络服务和营养,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。

        利用协议+ip地址+端口号三元组合,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其他进程进行交互。

标签:协议,入门,ip,编程,网络,TCP,连接,端口号,客户端
来源: https://blog.csdn.net/chengdiyiyo/article/details/122573309

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有