Java基础——网络编程(一)
本文主要记录网络编程的一些基础知识,学了前班部分,对专业术语有些蒙,但是,收货也是很多很多的。观察了自己计算机的进程,查找其他网络地址的IP,对互联网的层次关系有了更深一步的了解。下面多是概念的摘录,有时间我还要回来再看看,加深理解。
目录:
1.网络编程的基础知识
1.1 网络协议
1.2 tcp /ip
1.3 IP地址
1.4 Port(端口号)
2 UDP/Tcp
3 OSI参考模型
1 网络编程的基础知识
1.1 网络协议
规定了计算机之间连接的物理机械,电器等特性,及计算机间的相互寻址规则,以及数据发送冲突的解决办法,分段传输与解决大数据包的传输方式等等。
---机械特性,比如网线和网卡
---电器特性,比如电平3伏为1,一3为0
. HTTP1.1(Hypertext Transfer Protocol Vertion 1.1)超文本传输协议-版本1.1
. ARP(Address Resolution Protocol)地址解析协议
. SNMP(Simple Network Management Protocol)网络管理协议
. CMIP(Common Management Information Protocol)通用管理信息协议
. DHCP(Dynamic Host Configuration Protocol)动态主机配置协议
. FTP(File Transfer Protocol)文件传输协议
. IPv6(Internet Protocol Version 6)Internet协议-版本6
. IPX/SPX(Internetwork Packet Exchange/Sequential PacketExchange)互连网包交换/顺序包交换
. POP3(Post Office Protocol Version 3)邮局协议-版本3
. PPP(Point to Point Protocol)点对点协议
. SMTP(Simple Mail Transfer Protocol)简单邮件传送协议
. TELNET Protocol虚拟终端协议
. UDP(User Datagram Protocol)用户数据报协议
1.2 tcp /ip
网络协议也有多种 TCP /IP 只是一种
大多数网络程序,都是以这个协议为基础的。
TCP/IP协议族中包括上百个互为关联的协议有几个常用协议如下:
1、Telnet(Remote Login):提供远程登录功能,一台计算机用户可以登录到远程的另一台计算机上,如同在远程主机上直接操作一样。
2、FTP(File Transfer Protocol):远程文件传输协议,允许用户将远程主机上的文件拷贝到自己的计算机上。
3、SMTP(Simple Mail transfer Protocol):简单邮政传输协议,用于传输电子邮件。
4、NFS(Network File Server):网络文件服务器,可使多台计算机透明地访问彼此的目录。
5、UDP(User Datagram Protocol):用户数据包协议,它和TCP一样位于传输层,和IP协议配合使用,在传输数据时省去包头,但它不能提供数据包的重传,所以适合传输较短的文件。
1.3 IP地址(我查看了自己的IP和其他网站的IP)
每个internet上的 主机和路由器都由一个ip地址表示,它包扩网络号和主机号,所有ip地址, 都是32位的,按国际标准,分为a b c d e 五类
a 0+7位网络号 +主机号 1.0.0.0 到 127.255.255.255 之间
b 10+14位网络号 +主机号 127.0.0.0 到191.255.255.255之间
c 110+21位网络号 +主机号 192.0.0.0 到 223.255.255.255
d 1110+多点播送地址 224.0.0.0 到 239.255.255.255
e 11110+留做将来使用 240.0.0.0+ 247.255.255.255
==本地回路地址 127.0.0.1
计算机中正确安装TCP/IP协议后,计算机中都会有一个称做本地回路的地址 发往 127.0.0.1 的数据不经过网卡传递,而是指接被本地计算机中Tcp/ip协议栈中的几个上层协议接收,是一个用于本地计算机上使用的特殊地址,使用Ping就可以检查TCP/IP协议是否正确安装, 它没有和网卡绑定, 网卡没有正确连接或是没有网线的情况下,仍可使用该地址4 个字节表示的是 ipv4 16 个字节表示的IP 是ipv6。
java中 描述IP地址的对象是 InetAddress 直接已知子类: Inet4Address, Inet6Address
import java.net.InetAddress;
import java.net.UnknownHostException; public class InetTest1 {
public static void main(String[] args) throws UnknownHostException {
ipDemo();
} public static void ipDemo() throws UnknownHostException { InetAddress[] netAddr = InetAddress.getAllByName("www.youku.com");
for (InetAddress s : netAddr) {
System.out.println(s.getHostAddress());
}
System.out.println("=====分割线====="); InetAddress[] netAddr2 = InetAddress.getAllByName("www.baidu.com");
for (InetAddress s : netAddr2) {
System.out.println(s.getHostAddress());
}
}
}
1.4 Port(端口号)
因为一个计算机上同时可运行多个网络程序,而IP地址只能保证把数据送到某个计算机上,但不能保证把数据交给计算机上的每个程序,因此每个发送的网络数据包的头部,都包含有一个称为端口号的整数 即Port, 是一个占用两个字节的整数,用于表示这个数据包该交由哪个应用程序来处理,与数据包中的端口号相对应,必须为计算机上的网络程序也指定一个端口号,告诉网络程序应该接收哪个端口号的程序,一台计算机上不能有两个使用同一端口号的程序,范围是0-65535 0-1023之间的称为有名端口.用于一些知名的网络服务和应用。当计算机接收到一个网络程序发送的数据包后,驱动程序会根据数据包中指定的端口号,知道该交给哪个应用程序。 网络通迅,确切的说,不是两台计算机之间在收发数据,而是两个网络程序之间在收发数据
查看端口的命令 netstat -noa
====2 UDP/Tcp
---- TCP (Transmission Control Protocol )传输控制协议,是而向连接的通信协议,提供两台计算机之间的可靠和无差错的数据传输数据源和目标之间或建立一个虚拟的连接,建立后,计算机之间就会把数据,当作双向字节流进行交换。
---- UDP 用户数据报协议,(USER datagram Protocol) 是无连接的通信协议,不保证数据的可靠传输,能够向若干个目标发送和接收数据,数据包会有丢失\的时候。
---- TCP UDP 的数据包的帧格式 如下
协议类型 源IP 目标IP 源端口 目标端口 帧序号 帧数据
其中协议类型用于区分TCP UDP
====3 OSI参考模型(这里要重点理解!!)
OSI参考模型 (Open System Interconnect 开放式网络互联) // TCP/IP参考模型
七层:
应用层 Application 一些终端应用
表示层 Presentation 对接收的数据进行解释,加密和解密(把计算机能识别的东西.转换成人能识别的东西)如图片声音等
会话层 Session 建立数据传输通路
传输层 Transport 定义了一些数据传输的协议和端口号 常把这一层的数据叫段 //网关
网络层 将从下层接收到的数据进行IP地址的封装和解装 在这一层工作的设备叫路由器, 常把这层的数据叫包
数据链路层 Data Link 将从物理层接收的数据进行MAC(网卡地址)的封装和解装,常把这一层的数据叫帧 在这一层工作的设备叫交换机,网卡,网桥
物理屋 Physical,这一层的数据叫比特 //光纤
TCP/IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering Model)、因特网参考模型(Internet Reference Model)。
第四层,应用层
第三层,传输层
第二层,网间层
第一层,网络接口
Java基础——网络编程(一)的更多相关文章
- java基础-网络编程(Socket)技术选型入门之NIO技术
java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...
- 二十三、Java基础--------网络编程
Java中另一个重要技术就是网络编程了,为了更好的学习web方向的知识,有必要对java之网络编程好好学习,本文将围绕网络编程技术进行分析. 常见的网络协议:UDP.TCP UDP 1. 将数据源和目 ...
- Java基础——网络编程(二)
一.套接字 Socket 网络驱动程序提供给应用程序编程的接口和一种机制,可以比喻成一个港口码头 应用程序只要把货放在这,就算完成了货物的运送.它在应用程序中创建,通过一种绑定机制与驱动程序建立关系, ...
- Java基础——网络编程
一.网络编程概述 概述: Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接,联网 ...
- java基础—网络编程
一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程.
- JAVA基础——网络编程之网络链接
一.网络编程基本概念 1.OSI与TCP/IP体系模型 2.IP和端口 解决了文章最开始提到的定位的问题. IP在互联网中能唯一标识一台计算机,是每一台计算机的唯一标识(身份证):网络编程是和远程计算 ...
- Java基础——网络编程(三)
TCP 网络编程 -- tcp 分为客户端和服务端 -- 客户端对应的对象是 Socket -- 服务端对应的对象是 ServerSocket -- 如果客户端先启动,则出现 connection r ...
- 梦入IBM之java基础-网络编程
如今我们来谈谈最后的内容:网络编程: 1):TCP中是线程与线程进行通讯!内部的执行机制是这种:先有一个线程去监听某个port.然后假设有Socket连接上来了以后,server会生成一个Socket ...
- Java基础-网络编程1
网络编程 Socket 基本概念 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. B/S结构 :全称为Browser/Server结构,是指浏 ...
随机推荐
- sql server 查看列备注、类型、字段大小
select 列名 = a.name ,类型 = c.name ,长度 = columnproperty(a.id,a.name,'precision') ,备注 = g.value from sys ...
- AEAI DP创建弹窗
1 背景概述 在平时我们浏览页面时,经常会看见这样的应用情景,点击某个按钮或点击某个页面区域时,会弹出一个浮动窗口,像这类的功能,在一些开发的项目中很常见,笔者发现使用AEAI DP应用开发平台可以很 ...
- 响铃:蜗牛读书“文”、网易云信“武”:游戏之外网易的AB面
文|曾响铃来源|科技向令说(xiangling0815) 2019年开年,网易又"搞事情"了. 近日,网易集团旗下网易云信.网易七鱼主办的"网易MCtalk泛娱乐创新峰会 ...
- XGBoost,GBDT原理详解,与lightgbm比较
xgb原理: https://www.jianshu.com/p/7467e616f227 https://blog.csdn.net/a819825294/article/details/51206 ...
- “全栈2019”Java多线程第二十九章:可重入锁与不可重入锁详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- 【文文殿下】[APIO2010]特别行动队 题解
基本上是一个斜率优化裸题了 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int max ...
- 网络基础、多线程、ftp任务铺垫
一.网络基础 学习网络编程,了解一些网络基础的知识是必不可少的,下面学习一些基础的网络知识: 1.我们的电脑里有网卡,网卡里有mac地址: 2.我到某个地方插上网线,路由器或交换机中的DHCP服务为我 ...
- 【dpdk】使用libpcap-PMD驱动收发包
ref: Dpdk programmer’s guide 1. 概述 dpdk不仅提供针对物理和虚拟网卡的pmd驱动(Poll Mode Drivers),还提供两个纯软件的pmd驱动,libpca ...
- java项目配置域名(tomcat直接配置 or 使用nginx反向代理)
一: tomcat直接配置域名:https://blog.csdn.net/qq_36330228/article/details/78516160 二: 使用nginx进行反向代理 tomcat服 ...
- Vue2.5开发去哪儿网App 首页开发
主页划 5 个组件,即 header icon swiper recommend weekend 一. header区域开发 1. 安装 stylus npm install stylus --s ...