文章目录

  • 1. 概述
  • 2. InetAddress类
  • 3. 端口
  • 4. TCP协议
    • 4.1 传输消息
    • 4.2 文件上传
  • 5. UDP协议
  • 6. TCP与UDP区别
  • 7. URL
  • 8. 下载资源
  • 9. 协议相关面试题
    • (1)讲一下浏览器从接收到一个 URL 到最后展示出页面,经历了哪些过程。
    • (2)http 和 https 的区别

1. 概述

  • 网络编程:使用套接字(socket)来达到进程间通信,现在一般称为TCP/IP编程

  • 套接字(socket):网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。

  • 套接字原理机制
    通信的两端都有Socket。
    网络通信其实就是Socket间的通信。
    数据在两个Socket间通过IO传输。

  • 网络编程三要素①IP地址:InetAddress: 网络中设备的标识,不易记忆,可用主机名;②端口号: 用于标识进程的逻辑地址,不同进程的标识;③传输协议: 通讯的规则常见协议:TCP,UDP。

  • IP地址分类
    A类:1.0.0.1—127.255.255.254
    (1)10.X.X.X是私有地址(私有地址就是在互联网上不使用,而被用在局域网络中的地址)
    (2)127.X.X.X是保留地址,用做循环测试用的。
    B类:128.0.0.1—191.255.255.254 172.16.0.0—172.31.255.255是私有地址。
    C类:192.0.0.1—223.255.255.254 192.168.X.X是私有地址
    D类: 224.0.0.1—239.255.255.254
    E类: 240.0.0.1—247.255.255.254

  • 参考模型

2. InetAddress类

  • 表示互联网协议 (IP) 地址,方便我们对IP地址的获取和操作。

  • InetAddress.getByName(String host) //在给定主机名的情况下获取主机的IP地址

  • inetAddress.getHostAddress() //获取IP

  • inetAddress.getHostName() //获取主机名

  • 实例

  • 运行结果

3. 端口

  • 端口表示计算机上的一个程序的进程;端口的表示是一个16位的二进制数,2个字节,对应十进制的0~65535;单个协议下,端口号不能冲突,多个协议下,端口号可以相同;
  • 分类:公有端口:0~1023
    程序注册端口:1024~49151,用户分配或者程序
    动态、私有:49152~65535
  • 实例
  • 运行结果

4. TCP协议

  • TCP协议:传输控制协议,是可靠连接,类似于打电话,只有等待对方接通的时候才可以交流,也就是确认了对方可以传信息,才会发送信息,三次握手,四次挥手,但是传输速度慢;

4.1 传输消息

  • 实例:
    客户端:


    服务器

  • 运行结果

4.2 文件上传

  • 实例

客户端

服务端

  • 运行结果

5. UDP协议

  • UDP协议:用户数据报协议,是不可靠的,就像发短信,发出去就完事了,对方是否接收到就与自己无关,但是传输速度快;
  • 实例

用户端


服务器

  • 运行结果

6. TCP与UDP区别

  • TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是专门为了在不可靠的网络中提供一个可靠的端对端字节流而设计的,面向字节流。
  • UDP(用户数据报协议)是iso参考模型中一种无连接的传输层协议,提供简单不可靠的非连接传输层服务,面向报文。

区别:
1) TCP是面向连接的,可靠性高;UDP是基于非连接的,可靠性低;
2) 由于TCP是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时性差,同时过程复杂,也使其易于攻击;UDP没有建立连接的过程,因而实时性较强,也稍安全;
3) 在传输相同大小的数据时,TCP首部开销20字节;UDP首部开销8字节,TCP报头比UDP复杂,故实际包含的用户数据较少。TCP在IP协议的基础上添加了序号机制、确认机制、超时重传机制等,保证了传输的可靠性,不会出现丢包或乱序,而UDP有丢包,故TCP开销大,UDP开销较小;
4) 每条TCP连接只能时点到点的;UDP支持一对一、一对多、多对一、多对多的交互通信。

应用场景选择

  • 对实时性要求高和高速传输的场合下使用UDP;
  • 在可靠性要求低,追求效率的情况下使用UDP;
  • 需要传输大量数据且对可靠性要求高的情况下使用TCP。

7. URL

  • 统一资源定位符:定位资源的,定位互联网上的某一个资源
  • 实例

8. 下载资源

  • 代码

9. 协议相关面试题

(1)讲一下浏览器从接收到一个 URL 到最后展示出页面,经历了哪些过程。

1、DNS 解析
2、TCP 连接
3、发送 HTTP 请求
4、服务器处理请求并返回 HTTP 报文
5、浏览器解析渲染页面

(2)http 和 https 的区别

1、连接的端口不一样,http 是 80,https 是 443
2、http 连接很简单,没有状态; https 是 ssl 加密的传输,身份认证的网络协议,相对 http 传输比较安全

JavaSE(十四)——网络编程(IP地址、端口号、TCP、UDP)相关推荐

  1. Python网络编程基础之ip地址,端口号,TCP,socket

    Python网络编程基础 IP地址 ip地址表现形式 查看ip地址 Linux Windows 检查网络是否正常 端口与端口号 端口号分类 知名端口号 动态端口号 TCP协议 概念 TCP通讯步骤 特 ...

  2. 网络编程---Ip和端口号

    网络编程 网络编程的要素: IP 端口号 网络通信协议 IP ip地址:InetAddress 唯一定义一台网络上的计算机 127.0.0.1 : 本机localhost ip地址的分类 ipv4/i ...

  3. 网络编程-IP地址、端口号、网络字节序

    IP地址.端口号.网络字节序 本文中部分名词可见: 协议.TCP/IP模型.数据包封装与分用 一.IP地址 1. 简单认识 IP协议有两个版本:IPv4和IPv6. (1)IP地址在IP协议中,用来标 ...

  4. 网络编程及三大协议(TCP + UDP + Http)

    网络编程及三大协议(TCP + UDP + Http) 一.网络编程 1.计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络 ...

  5. 网络编程------IP地址,端口号,套接字,网络字节序

    IP地址         IP地址是IP协议中,用来标识网络中的唯一一台主机的地址.IP协议有两个版本IPv4,IPv6.在IPv4中,IP地址是一个4字节的32位的整数.在IPv6中,IP地址是一个 ...

  6. java什么是网络接口_java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)...

    使用java进行网络程序的开发,可以说是一件令人愉悦的事情,对于用惯了C++网络接口编程的人来说,当他们首次使用Java开发网络应用程序,会发现java开发网络应用是如此的简单,甚至仅用几分钟时间,您 ...

  7. C# 网络编程 IP地址转换

    IP地址 IP地址:是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内惟一的标识符.一个IP地址主要由两部分组成:网络地址和主机地址. 网络地址由因特网权力机构分配,主机地址由各个网络的管 ...

  8. unix网络编程之简介和运输层TCP/UDP

    前言:本文只介绍了有关UNIX网络编程的理论知识,具体的应用和例子在稍后的博文中将更新 第一章  简介 一个简单的服务器程序步骤: 说明:1.创建TCP套接口 2.捆绑服务器的众所周知端口 3.把套接 ...

  9. python(18):网络编程(七层协议+tcp/udp+socket编程)

    Python作为最热门的语言,使我们每个人应该学习的一门技术! 本文针对初学者,我会用最容易的方式告诉你如何入门python! 一.基本网络概念 1.计算机之间如何进行联机 早期: 以太网:局域网与交 ...

最新文章

  1. Datawhale学习的常见问题解答!
  2. 开源阿牛图像处理实验室
  3. 全国青少年软件编程python等级考试-全国青少年软件编程等级考试:Python一级考试大纲...
  4. sql基础教程mysql_SQL基础教程(第2版)笔记整理
  5. 新思科技助力IBM将AI计算性能提升1000倍
  6. Leetcode 300 最长递增子序列 (每日一题 20210803)
  7. 计算机实训课教案模板,CorelDRAW实训课教案(7周)
  8. matlab 中 eps 的分析
  9. 数目nullRQNOJ-302-统计单词个数--区域dp
  10. LeetCode 1812. 判断国际象棋棋盘中一个格子的颜色
  11. php页面价格排序代码,php 数组动态添加实现代码(最土团购系统的价格排序)
  12. PowerDNS管理工具开发中学习到的DNS知识
  13. this(C# 参考)
  14. tensorflow tensorboard summary的工作特点
  15. python 提取指定目录下的图片名称
  16. java8实战:使用流收集数据之toList、joining、groupBy(多字段分组)
  17. weblogic部署静态网页
  18. lg g3 android 5.0,lg g3 5.0 root教程_lg g3获取5.0系统的root方法
  19. biostarhandboo(三)|本体论和功能分析
  20. 全文搜索引擎solr使用说明

热门文章

  1. hdu4099(斐波那契数+字典树)
  2. uva1515(模拟)
  3. 修理牛棚 Barn Repair
  4. 电脑重启后python导入的库不见_为什么python不会在启动时自动导入每个模块?
  5. 记录用户转成超级用户的文件名字_Linux学习手册(四)—用户及权限管理类命令...
  6. mysql gbk支持_mysql如何支持gbk编码
  7. 数字开头的正则表达式_初学Web前端要注意什么 正则表达式是怎么回事
  8. python中文件读取不出来_Python文件读取
  9. springboot shiro和freemarker集成之权限控制完全参考手册(跳过认证,登录由三方验证,全网首发)...
  10. Node.js环境搭建npm安装