一分钟了解java网络编程

createh51周前 (03-06)技术教程8

一、OSI七层网络模型

应用层:Http协议、电子邮件传输、文件服务器等;

表示层:数据转换,解决不同系统的兼容问题(跨语言);

会话层:建立与应用程序的会话连接;

传输层:提供了端口号和传输协议(TPC/UDP);

网络层:为数据实现路由(路由器、交换机);

数据链路层:传输地址的帧以及错误检测;

物理层:以二进制形式,在物理机器上实现传输(光纤、专线各种物理介质传输);

网络通讯协议图连接:
http://www.colasoft.com.cn/download/protocols_map.php

二、TCP与UDP协议

Socket技术:任何编程语言都支持Socket技术开发(网络编程技术),目的就是解决两个应用程序通讯的问题;

Socket技术支持两种协议:TCP与UDP协议;

TCP与UDP协议区别

TCP协议:是一个面向连接可靠的协议,因为在建立连接的时候必须通过三次握手才可以实现数据传输;因此数据不会丢失;应用场景: http协议,rpc框架等;

UDP协议:是面向无连接的协议,因为UDP在通讯的时候不需要接受方存在;属于不可靠协议;应用场景:直播,微信聊天等;

TCP协议三次握手:

1. 第一次握手:客户端会向服务端发送消息SYN=1,SEQ=x(随机数);

2. 第二次握手:服务端接确认收到客户端的消息SYN和SEQ,服务端会给客户端回复消息ACK=1+x,SEQ=y(随机数);

3. 第三次握手:客户端会收到服务端的回复SYN,ACK,SEQ(y),客户端就会给服务端发送消息ACK=1+y;

三次握手成功开始建立连接,传输数据;

四次挥手

1. 第一次挥手:客户端向服务端发送一个释放连接通知;

2. 第二次挥手:服务端接受到释放通知之后,告诉给客户端说等待一下,因为可能存在有其他的数据没有发送完毕,等待数据全部传输完毕之后就开始关闭连接;

3. 第三次挥手:服务器端所有的数据发送完毕之后,就告诉客户端说现在可以释放连接了;

4. 第四次挥手:客户端确认是最终释放连接通知,ok 就开始向服务端发送我们可以开始关闭连接啦;

注:SYN(建立连接)、ACK(确认标记)、FIN(终止标记)

总结:三次握手目的:就是确保连接可靠;四次挥手就是关闭连接;

三、HTTP协议实现原理

Http协议一种超文本传输的协议,基于TCP/IP协议的包装,应用场景:img、css、js、html等;

http协议版本:1.0和1.1

http协议1.0: 规定客户端和服务端传输完成之后,立马关闭连接(短链接);(如果请求非常多,这样频繁去关闭连接,非常耗资源);

http协议1.1: 开始支持长链接;

四、长链接与短链接

长链接:客户端与服务端建立连接之后,不会立马关闭连接,会保持一定的复用机制,默认情况下在300s空闲情况下自动断开连接;

短链接:客户端与服务端发送消息后,立马关闭连接,如果频繁发送请求,可能消耗服务器端资源;

相关文章

编写一个java程序

第1步,java编译环境配置这步骤略过,保证在任意目录下均可执行java和javac程序即可。第2步,编一个简单的java程序可以采用记事本,新建文件名为 Main.java代码如下://java代码...

Windows安装Java代码环境的方法

本文介绍在Windows电脑中,安装JDK(Java Development Kit),也就是Java开发工具包的详细方法。 JDK是Java软件开发的基础,由Oracle公司提供,用于构建在J...

Java开发都需要学习什么

学习Java开发通常需要掌握以下内容:1. 基础语法:变量、数据类型(如整型、浮点型、字符型等)、运算符、控制语句(if-else、for、while等)、数组等基础知识。2. 面向对象编程:类和对象...

迅速了解-Java网络编程

Java网络编程在JavaSE阶段,我们学习了I/O流,既然I/O流如此强大,那么能否跨越不同的主机进行I/O操作呢?这就要提到Java的网络编程了。注意:本章会涉及到 计算机网络 相关内容(只会讲解...

Java Socket编程:从零到精通,掌握网络通信的核心技能!

作为一名程序员,你是否曾好奇过微信、QQ、在线游戏等应用是如何实现实时通信的?或者想自己动手搭建一个简单的聊天室?这一切都离不开Socket编程,而Java作为一门经久不衰的语言,为Socket编程...