博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
廖雪峰Java13网络编程-1Socket编程-1网络编程概念
阅读量:5110 次
发布时间:2019-06-13

本文共 2105 字,大约阅读时间需要 7 分钟。

1.计算机网络

1.1 什么是计算机网络?

  • 两台或更多计算机组成的网络
  • 同一网络内的任意2台计算机都可以直接通信
  • 所有计算机必须遵循同一种网络协议

1.2 什么是互联网

  • 互联网是网络的网络
  • 互联网采用TCP/IP协议
    * TCP/IP协议泛指互联网协议
    * 其中最重要的2个协议是TCP协议和IP协议

2. IP地址

  • IP地址用于唯一标识一个网络接口(Network Interface)
    * IPv4采用32位地址,类似101.202.99.12
    * IPv6采用128位地址,类似2001:0DA8:100A:0000:0000:1020:F2F3:1428
  • 公网IP可以直接被访问
  • 内网IP只能在内网访问
    * 192.168.x.x
    * 10.x.x.x
  • 本机地址:127.0.0.1

  • IPv4地址实际上是一个32位整数
    * 4个整数,每一个在0-255(2^8-1)之间,即32位整数
import java.math.BigInteger;public class IPCalculator {    public static void main(String[] args) throws NumberFormatException{        int[] ip = {101,202,99,12};        String[] listaddr16=new String[4];        for(int i=0;i

1418970-20190706115851289-470655813.png

如果1台计算机有1个网卡,并且接入了网络,它会拥有2个IP地址,本地地址127.0.0.1和一个IP地址,并通过这个IP地址连接网络。
如果计算机有2个网卡,除了本地地址,还有2个IP地址,分别接入2个网络。通常连接2个网络的设备是交换机和路由器,其至少有2个IP地址,分别接入不同的网络,让网络之间连接起来。
1418970-20190706105951638-83660790.png
如果2台电脑位于同一个网络下,它们可以直接通信,因为其IP地址前段是相同的,网络号也是相同的。
网络号是IP地址通过子网掩码以后过滤得到的。每台计算机都配备了IP地址和子网掩码,根据IP地址和子网掩码可以计算出网络号。
计算方法:按组对齐,做与运算。
1418970-20190706150432611-1274587021.png
如果计算出的网络号相同,证明在同一个网络,可以直接通信。
1418970-20190706150355056-84100339.png
如果2台计算机计算出的网络号不同,2台计算机不在同一个网络,不能直接通信。必须通过路由器或交换机等网络设备间接通信,我们把这种设备成为网关。
1418970-20190706150711115-2058658285.png
网关的作用:连接多个网络,负责把来自一个网络的数据包发到另一个网络,这个过程成为路由。
1418970-20190706150816253-1967391618.png
所以一台计算机的网卡会有IP地址、子网掩码、网关的IP地址这3个关键的配置。

1418970-20190706150930167-641261045.png

直接记忆IP地址非常困难,所以我们通常使用域名来访问某个特定的服务。域名解析器DNS负责把域名翻译为对应的IP地址,客户端再根据IP地址来访问服务器。

3. TCP/IP协议

TCP/IP协议:繁殖互联网协议簇,最重要的2个协议是TCP/IP协议。

3.1 OSI模型(Open System Interconnect)

OSI模型是ISO组织定义的一个计算机互联的标准模型。只是一个定义,目的是简化网络各层的操作,提供标准的接口,便于实现和维护。

应用层:提供应用层序之间的通信
表示层:处理数据格式、加减密
会话层:负责建议和维护会话
传输层:提供端到端的可靠传输
网络层:负责根据目标地址来选择路由
链路层和物理层:负责把数据进行分片,并且真正通过物理网络进行传输,例如无线网、光线等

互联网实际使用的TCP/IP模型大致对应OSI的5层模型

1418970-20190706152032845-1584864559.png

4. IP协议和TCP协议

4.1 IP协议

  • 分组交换 一个大的数据包想要通过IP协议传输的时候,被自动分成若干个小的数据包,然后通过网络进行传输。
  • 不保证可靠传输

    4.2 TCP协议:

    TCP协议也是应用最广的协议,许多高级协议都是建立在TCP协议之上的。
  • 传输控制协议 建立在IP协议上的,IP协议只负责发数据包,而TCP控制数据包的传输
  • 面向连接 TCP在传输数据之前,需要先建立连接,然后才能传输数据,传输完后还需要断开连接
  • 可靠传输 TCP是一个可靠传输的协议,之所以能保证这一点,是通过接受确认、超时重传这些机制实现的
  • 双向通信 TCP允许双向通信,双方可以同时发送接受数据

4.3 UDP协议(User Datagram Protocol)数据报文协议:

  • 数据报文协议
  • 无连接
  • 不保证可靠传输
  • 传输效率高

UDP比TCP简单的多。UDP协议不需要连接,不保证可靠传输,发送方发送数据后,无法得知接收方是否收到,因为UDP协议比TCP要简单的多,所以同样的数据用UDP传输要比TCP效率高。

选择UDP协议的时候,传输的数据,通常是能够容忍丢失一部分的,例如一些语音、视频通讯的应用会选择UDP协议

5. 总结:

计算机网络的基本概念:

  • 互联网:网络的网络
  • IP地址:计算机在网络中的标识
  • 网关:负责连接多个网络
  • 协议:TCP/IP协议
  • TCP协议:面向连接,可靠传输

转载于:https://www.cnblogs.com/csj2018/p/11135489.html

你可能感兴趣的文章
中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
iframe跨域与session失效问题
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
Hash和Bloom Filter
查看>>
python常用函数
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
【工具相关】iOS-Reveal的使用
查看>>
数据库3
查看>>
存储分类
查看>>
下一代操作系统与软件
查看>>
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>