IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 第九天 网络编程 -> 正文阅读

[网络协议]第九天 网络编程

基本原理:

网络架构模型:

网络架构模型主要有 OSO参考模型? 和 TCP/IP五层模型

ISO是国际标准化组织,1985研究网络互联模型

ISO为了更好的使用网络、普及、推出了OSI参考模型,让所有的公司按照统一的标准,制定自己的网络,便于互联。

OSI定义了网络连接的七层框架(物理层、数据链路层、网络层、传输层、应用层)

应用层:应用层是最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。
我们常见的网络协议:HTTP、HTTPS、FTP、TELNT等。


传输层:建立了主极端链接、传输层的主要作用是为了上层协议提可靠、透明的数据传输服务,包括处理差错控制和流量控制等等问题,使高层用户看到只是两个传输实体的一条主机到主机,可由用户控制和设定:TCP/UDP就是在这一层。端口号就是这里的“端”。


网络层:通过ip寻地来建立两个节点之间的链接,为源端的运输层来分组,选择合适的路由和交换节点,正确无误的按照地址传送给目的端的运输层,就是通过说的IP层,也就是经常说的IP协议层、IP协议是internet基础。

TCP协议与UDP协议
TCP(Tranfer Control Protocol)的简称:一种面向连接的保证可靠传输的协议,
通过TCP协议传输,得到一个顺序无差错的数据流,发送方和接送方成对的两个socket之间必须连接链接,当一个socket等待连接时,另一个socker可以要求进行连接,一旦两个socket连接起来,它们就可以进行双向的数据传输,双方都可以进行发送和接收。

TCP的三次握手
建立起来一个TCP连接需要经过三次握手
第一次:客户端发送syn包到服务器,并进入SUN_SEND状态,等待服务器确认;
第二次:服务器接收到syn包,必须确认客户端的syn,同时自己也发送一个syn包,此时服务器进入SYN_RECV状态;
第三次:客户端收到服务器的syn包,向服务器发送确认,此包发送完毕,客户端和服务器进行ESTABLISHED状态;

三次握手完成

握手过程中传送的包中不包含数据,三次握手完毕后,客户端与服务端才正式的开始传输数据。

在理想状态下,TCP连接一旦建立,在通信双方任何一方主动关闭连接之前,TCP连接都将一致保持下去。服务器和客户端都可以主动的断开TCP连接的请求。

UDP

UDP(User Datagram Protocol)是一种无连接协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,在网络以任何可能的路径传往目的的地址,因此能否到达目的地,到达目的地址和时间以及内容的正确性都是不能被保证。

UDP每个数据报中都给出了完成的地址信息,因此无需建立发送方和接受方的链接。

UDP在传输数据的大小上是有所限制的,每个被传输的数据必须限定为60KB之内。

UDP是一个不可靠的协议,发送方锁发送的数据并不一定以相同的次序发送到接受方

TCP面向连接协议,在socket之间进行数据的传输之间必须连接,所以TCP中需要连接时间。

TCP传输数据没有小大的限制,一旦连接建立起来,双方的Socket就可以按照统一的格式传输大的数据

TCP是可靠的协议它确保接受方完全正确的获取发送方所发送的全部数据。

TCP在网络通信上有极限的生命力,如远程连接(Telnet)和文件的传输(FTP)都需要不定长度数据被可靠的传输。但是可靠的传输,需要付出代价,对数据的内容中的正确性检验必然需要占用计算的处理时间和网络带宽,所以TCP传输的效率不如UDP高

UDP操作简单,而且仅需要少量的监护,所以通常用于局域网高可靠的分散系统中,比如视频会议

Socket原理

Socket提供了进程通信的端点,进程通信之前,双方首相必须啊各自创建一个端点否则没有办法

连接相互通信,连接过程,服务器监听,客户端的请求,连接的确认。

数据包加密案列

package Web;

import java.net.*;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketAddress;
import java.net.SocketException;


public class Web2 {
    public static void main(String[] args) {
        DatagramSocket socket = null;
        byte[] infos = new byte[1024];
        DatagramPacket dp = new DatagramPacket(infos, infos.length);


        try {
            socket = new DatagramSocket(8707);
            socket.receive(dp);
            String info = new String(dp.getData(),0, dp.getData().length);
            System.out.println("客户端说" + info);

            SocketAddress sa = dp.getSocketAddress();
            String strs = "您好,我是服务器端!";
            DatagramPacket dpA = new DatagramPacket(strs.getBytes(),0,strs.getBytes().length,sa);
            socket.send(dpA);


        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (null != socket)
                socket.close();
        }

    }
}

package com.xk.democ;

import java.io.IOException;
import java.net.*;

public class DemoB {
    public static void main(String[] args) {
        String info = "你好 我想咨询一个问题!";
        byte[] infos =  info.getBytes();
        DatagramSocket socket = null;

        try {
            // 客户端需要一个 DatagramSocket 对象
            socket = new DatagramSocket();

            InetAddress ia = InetAddress.getByName("localhost");
            // 构建客户端需要 发送的数据包对象
            DatagramPacket dp = new DatagramPacket(infos,infos.length,ia,8003);
            socket.send(dp);

            byte[] strs = new byte[1024];
            DatagramPacket dp1 = new DatagramPacket(strs, strs.length);
            socket.receive(dp1);

            String reply = new String(dp1.getData(),0,dp1.getData().length);
            System.out.println(reply);
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(null != socket){
                socket.close();

            }
        }


    }
}

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-01 14:49:27  更:2021-08-01 14:51:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:29:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码