网络编程- 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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值