网络编程- socket编程 - 网络基本概念

第一节 网络基本概念

计算机网络
ISO/OSI模型和TCP/IP协议栈
TCP与UDP区别和联系
IP地址和端口号

1.1计算机网络

在这里插入图片描述

计算机网络是指将地理位置不同的具有独立功能()的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统

独立功能:没有网络可以独立存在的,不依附网络
终端:非独立: 超市结算终端(键盘+显示器)

计算机网络定义分析

主干:计算机网络是计算机系统
网络功能:资源共享 信息传递
网络组成:
网络硬件:计算机 外部设备 通信线路 (连接)
网络软件:网络操作系统 网络管理软件 网络通信协议(管理协调)
计算机网络分类1(按照规模)
局域网LAN
城域网MAN
广域网WAN

计算机网络分类2(传输介质)
同轴电缆网络 : 和有线电视网的电缆相似
双绞线网络
光纤网络: 快 容量大 光信号 玻璃介质 卫星网络
在这里插入图片描述

计算机网络分类3(拓扑结构)
星形网络
总线网络
环状网络

1.2网络通信协议

网络通信协议
计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准
好比公路交通规则,学生守则

问题:网络协议太复杂
计算机网络通信涉及内容很多,比如指定源地址和目标地址,加密解密,压缩解压缩,差错控制,流量控制,路由控制,如何实现如此复杂的网络协议呢?

解决方案:分层
由于结点间联系复杂,制定协议时,把复杂成份分解成 一些简单的成份,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与再下一层不发生关系。

网络通信协议的分层
名义上标准:ISO/OSI参考模型
事实上标准: TCP/IP协议栈(Internet使用的协议)
在这里插入图片描述

数据封装与拆封
1、封装(发送数据)
在这里插入图片描述

2、拆封(接收数据)
在这里插入图片描述

TCP/IP协议栈
网络层主要协议IP协议
传输层主要协议TCP和UDP
在这里插入图片描述

1.3 TCP协议和UDP协议

TCP(transfer control protocol)
一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议 。
特点: 面向连接 点到点的通信 高可靠性:三次握手 占用系统资源多、效率低
生活案例 : 打电话
应用案例: : HTTP FTP TELNET SMTP
在这里插入图片描述

UDP(User DatagramProtocol )
一种无连接传输层协议,提供面向事务的简单不可靠信息传送服务
特点: ; 非面向连接,传输不可靠,可能丢失
发送不管对方是否准备好,接收方收到也不确认 : 可以广播发送 ; 非常简单的协议,开销小
生活案例: ;发送短信 发电报
应用案例:: DNS SNMP
: DNS域名解析
www.jd.cn —ip地址
www.bjsxt.com—ip地址
SNMP: SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理系统获知网络出现问题

1.4 IP地址和端口

IP地址
用来标志网络中的一个通信实体的地址。通信实体可以是计算机,路由器等。

IP地址分类
IPV4:32位地址,以点分十进制表示,如192.168.0.1
IPV6:128位(16个字节)写成8个16位的无符号整数,每个整数用四个十六进制位表示,数之间用冒号(:)分开,如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984

特殊的IP地址
127.0.0.1 本机地址
192.168.0.0–192.168.255.255私有地址,属于非注册地址,专门为组织机构内部使用。

端口:port
IP地址用来标志一台计算机,但是一台计算机上可能提供多种应用程序,使用端口来区分这些应用程序。
端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用程序。
端口范围0—65535,16位整数

理解IP和端口的关系
IP地址好比每个人的地址(门牌号),端口好比是房间号。必须同时指定IP地址和端口号才能够正确的发送数据
IP地址好比为电话号码,而端口号就好比为分机号。

端口分类
公认端口 0—1023 比如80端口分配给WWW,21端口分配给FTP
注册端口 1024—49151 分配给用户进程或应用程序
动态/私有端口 49152—65535

IP和端口API
InetAddress类 封装计算机的ip地址 ,没有端口
InetSocketAddress 包含端口,用于socket通信的

【示例1】InetAddress类的使用
public class TestInetAddress {
public static void main(String[] args) throws UnknownHostException { //认识本机的IP地址
InetAddress ia = InetAddress.getLocalHost();
System.out.println(ia);
System.out.println(ia.getHostName());
System.out.println(ia.getHostAddress());
//System.out.println(ia.getAddress());
byte[] buf = ia.getAddress();
System.out.println(buf.length);
System.out.println(Arrays.toString(buf));
//认识百度的IP地址
//InetAddress ia2 = InetAddress.getByName(“www.baidu.com”);
InetAddress ia2 = InetAddress.getByName(“www.bjsxt.com”);
System.out.println(ia2);
System.out.println(ia2.getHostAddress());
System.out.println(Arrays.toString(ia2.getAddress()));
}
}

【示例2】InetSocketAddress 类的使用
public class TestInetSocketAddress {
public static void main(String[] args) throws UnknownHostException {
// InetSocketAddress isa=new InetSocketAddress(“www.baidu.com”, 1234);
InetAddress addr = InetAddress.getByName(“www.baidu.com”);
int port = 4321;
InetSocketAddress isa = new InetSocketAddress(addr, port);
System.out.println(isa);
System.out.println(isa.getAddress());
System.out.println(isa.getPort());
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值