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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 简单网络通信 -> 正文阅读

[网络协议]简单网络通信

一、TCP/IP protocol

TCP/IP协议族
1.分为四层:应用层(FTP、DNS、HTTP)、传输层(TCP\UDP)、网络层、数据链路层(硬件)。

2.传输流程:(发送端从应用层往下走,接收端从链路层网上走)

例如客户端是发送端,服务器是接收端:客户端从上到下到链路层,找到服务器的链路层,再从下到上传到应用层。

发送端每通过一层增加上该层的首部信息,接收端每通过一层删除该层的首部信息。这种把信息包装起来的方法叫做封装。

3.TCP协议的作用:请求端把HTTP请求报文分割成有序号的数据包+服务端按序号组合接收到的数据包

4.IP协议的作用:通过路由器,一边中转一边送达数据包。

5.HTTP协议的作用:请求端生成请求报文+服务端分析处理TCP层按序号组合好的请求报文。

6.TCP著名的三次握手

众所周知,TCP协议提供可靠的字节流服务(把HTTP请求报文分割成数据包),那么为什么可靠呢?因为使用TCP协议发送完数据包后,发送端会与接收端进行三次握手:
第一次:发送端发送一个标有SYN的数据包
第二次握手:接收端接收到以后,回发一个标有SYN/ACK的数据包
第三次握手:发送端接收到,发送标有ACK的数据包。
ps:SYN和ACK都是TCP的标志。
如有哪个环节莫名中断,TCP协议会重复这个三次握手过程。

二、简单socket网络编程(Java实现)

服务端代码

import java.util.Scanner;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class server {

    public static void main(String[] args) throws Exception{

        //1.创建一个服务端socket
        ServerSocket serverSocket=new ServerSocket(8888);
        //2调用accept方法等待连接,线程会阻塞状态
        System.out.println("Socket服务已启动,等待连接");
        Socket socket=serverSocket.accept();
        System.out.println("接收到客户端连接请求");
        //3.实现数据的交互
        //获取输入流
        InputStream inputStream= socket.getInputStream();
        InputStreamReader isr=new InputStreamReader(inputStream);
        BufferedReader br=new BufferedReader(isr);

        String  info=null;
        while((info=br.readLine())!=null){//循环读取信息
            System.out.println("收到客户端的请求:"+info);
        }
        socket.shutdownInput();

        //4.获取输出流,相应客户端请求
        OutputStream os=socket.getOutputStream();
        PrintWriter out=new PrintWriter(os);
        out.write("这是server端");
        out.flush();



        //关闭资源
        out.close();
        os.close();

        br.close();
        isr.close();
        isr.close();
        socket.close();
        serverSocket.close();
    }
}

客户端代码

import java.io.*;
import java.net.Socket;

public class client {
    public static void main(String[] args)throws Exception {

        //1.创建Socket客户端,指定服务器和端口
        Socket socket=new Socket("127.0.0.1",8888);

        //2.连接成功后发送信息
        //获取输出流
       OutputStream outputStream=socket.getOutputStream();
       PrintWriter out=new PrintWriter(outputStream);
       out.write("admin,admin");
       out.flush();

//这一句很重要,要写在前面,如果不写在这里,Socket Server 端的代码就会卡在读取inputStream中
        socket.shutdownOutput();

       //3.获取输入流得到服务器端的响应
        InputStream inputStream= socket.getInputStream();
        InputStreamReader isr=new InputStreamReader(inputStream);
        BufferedReader br=new BufferedReader(isr);

        String  info=null;
        while((info=br.readLine())!=null){//循环读取信息
            System.out.println("收到服务端的响应:"+info);
        }


        br.close();
        isr.close();
        out.close();

       out.close();
       socket.close();


    }
}
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 14:20:18  更:2022-01-01 14:20:30 
 
开发: 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年10日历 -2024/10/6 12:49:13-

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