Socket网络编程(一)——网络通信入门&基本概念

本文介绍了网络通信的基本概念,包括网络的定义、通信架构(CS与BS),并详细讲解了网络编程、7层OSI模型、Socket工作原理及其与TCP、UDP的关系,以及CS模型在实际应用中的体现,如FTP、SMTP和HTTP。还涉及了TCP/IP协议中的报文段和Web请求的访问流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络通信基本概念

什么是网络?

  • 在计算机领域中,网络是信息传输、接收、共享的虚拟平台
  • 在通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享
  • 网络是人类发展史来最重要的发明,提高了科技和人类社会的发展

网络通信的基本架构

通信的基本架构主要有两种形式:一种是CS架构(Client 客户端/Server服务端)、一种是BS架构(Brower 浏览器/Server服务端)。

  1. CS架构的特点:CS架构需要用户在自己的电脑或者手机上安装客户端软件,然后由客户端软件通过网络连接服务器程序,由服务器把数据发给客户端,客户端就可以在页面上看到各种数据了。
  2. BS架构的特点:BS架构不需要开发客户端软件,用户只需要通过浏览器输入网址就可以直接从服务器获取数据,并由服务器将数据返回给浏览器,用户在页面上就可以看到各种数据了。Java的程序员,以后从事的工作方向主要还是BS架构的。

什么是网络编程?

  • 网络编程从大的方面说就是对信息的发送到接收
  • 通过操作相应Api调度计算机硬件资源,并利用传输管道(网络)行数据交换的过程

7层网络模型-OSI模型

基础层∶物理层(Physical)、数据链路层(Datalink)、网络层(Network)
传输层(Transport) : TCP-UDP协议层、Socket
高级层∶会话层(Session)、表示层(Presentation)、应用层(Application)
模型对应关系图
20240129-104037-1F.png

什么是Socket?

  • 简单来说是IP地址与端口的结合协议(RFC 793 )
  • 一种地址与端口的结合描述协议
  • TCP/IP协议的相关API的总称;是网络Api的集合实现
  • 涵盖了: Stream Socket/Datagram Socket

Socket的作用和组成

  • 在网络传输中用于唯一标示两个端点之间的链接
  • 端点∶包括(IP+Port )
  • 4个要素:客户端地址、客户端端口、服务器地址、服务器端口

Socket传输原理

20240129-110238-BE.png

Socket与TCP、UDP的关系

Socket就是对TCP、UDP之间的封装

Socket 之 TCP

  • TCP是面向连接的通信协议
  • 通过三次握手建立连接,通讯完成时要拆除连接
  • 由于TCP是面向连接的所以只能用于端到端的通讯
    图解
    20240129-110557-z3.png

Socket 之 UDP

  • UDP是面向无连接的通讯协议
  • UDP数据包括目的端口号和源端口号信息
  • 由于通讯不需要连接,所以可以实现广播发送,并不局限于端到端
    图解
    20240129-110620-52.png

CS模型(Client-Server Application)

  • TCP/IP协议中,两个进程间通信的主要模式为:CS模型
  • 主要目的:协同网络中的计算机资源、服务模式、进程间数据共享
  • 常见的:FTP、SMTP、HTTP

报文段

  • 报文段是指TCP/IP协议网络传输过程中,起着路由导航作用
  • 用以查询各个网络路由网段、IP地址、交换协议等lIP数据包
  • 报文段充当整个TCP/IP协议数据包的导航路由功能
  • 报文在传输过程中会不断地封装成分组、包、帧来传输
  • 封装方式就是添加一些控制信息组成的首部,即报文头

牛刀小试(TCP消息发送与接收)

Socket客户端实现

代码如下

package cn.kt.SocketDemoL2;

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

public class Client {
   
    public static void main(String[] args) throws IOException {
   
        Socket socket = new Socket();
        // 超时时间
        socket.setSoTimeout(3000);

        // 连接本地,端口2000;超时时间3000ms
        socket.connect(new InetSocketAddress(Inet4Address.getLocalHost(), 2000), 3000);

        System.out.println("已发起服务器连接,并进入后续流程~");
        System.out.println("客户端信息:" + socket.getLocalAddress() + 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿意做鱼的小鲸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值