java网络专题

本文深入探讨了TCP/IP协议栈的基本概念,包括TCP和IP协议的作用,以及它们在网络通信中的重要性。文章还详细讲解了应用层协议如HTTP、Telnet和SSH的工作原理,传输层如何打包数据并确定目标应用程序,以及网络访问层的数据发送和接收过程。此外,文中还介绍了Socket编程的基础知识,包括如何创建Socket对象、进行三次握手建立连接、发送和接收数据等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二次的博客,也没有什么感想,就觉得老师说的很有道理,如果自己没有什么学习方法,那就每天都敲代码,肯定会有收获
知识梳理
TCP/IP协议栈 栈:一组协议
TCP 网络传输控制协议
IP 网络地址协议
应用层:访问的网页 http协议(超文本传输协议)
远程登录主机 telnet协议 ssh协议(保证安全)
传输层:打包和确定目的应用程序
TCP(保障数据的可靠有序),UDP(不保障)

    http 占用80 端口
    telnet 22
    ssh 22
    mysql 3306

互联网层:IP协议
网络访问层:
发送:应用层->传输层—>互联网层->网络访问层
接收:网络访问层—>互联网层—>传输层—>应用层

连接:telnet 对方ip 端口号
发送请求:http协议
请求:
GET /time HTTP/1.1
Host:localhost
回车
回车

响应:

Socket 端点 底层是TCP协议
1.新建Socket对象
Scocket(host代表主机,port:端口号)//三次握手
客户端->服务器
服务器->客户端
客户端->服务器
2.发送数据用输出流
Outputstream
3.接收响应用输入流
Inputstream
用bufferedReader

应用层
URL 统一资源定位符
创建new URL(http://ip地址:端口/资源地址)
HTTPURLConnection connection =url().openconnection();//建立连接,发送get请求
connection.getInputStream//拿到服务器返回的结果

3.服务器端
3.1阻塞IO BIO
serverSocket 服务器的端点
new ServerSocker(端口号);//每个程序只能占用一个端口,自己的程序用4位以上的端口
.accept();//等待,直到客户端连接为止

127.0.0.1<==>localhost

new Thread(new runnable{
public void run(){
把io相关的操作都放到线程内执行,让每个线程处理一个io操作,避免io阻塞
}
}).start();
阻塞io的特点,一个socket执行io读写操作会阻塞其它io的读写
一个线程内io的读写是串行的,可以用多线程的方法来解决,建议使用线程池而不是自己手动创建线程

线程池
ExecutorService service=new ThreadPoolExecutor(corePoolSize,maxpoolsize,keepAliveTime,timeUnit,BlockingQueue)
corepoolsize 核心线程数
maxpoolsize 最大线程数:核心线程数+救急线程数<=最大线程数
keepAliveTime保持时间 如果一个线程闲暇的时间超过了保持时间,那就把它回收,但不会少于核心线程数
timeUnit时间单位
BlockingQueue阻塞队列 当任务数超过核心线程数后,就把任务放入阻塞队列排队运行(有界 无界)

3.2并发量再高怎么办
非阻塞IO NIO, nonBlocking IO,new IO
线程(多路)复用
一个线程可以同时处理多个io操作,减少了线程的数量,能够应付更高的并发
WEB服务器 tomcat 熊猫(BIO,NIO)
Netty 服务器 封装了NIO技术,并发能力很高
spark 分布式计算框架
Redis 缓存服务器(c语言)单线程 QPS 10万

#3.3
new Thread(()—>{}).strat();
参数部分 特殊符号 代码体
(形参) -> {执行的代码}
针对单方法的接口,才能使用lambda表达式简化
当代码体部分只有一条语句,{}可省略,且不能加分号
参数部分可以省略类型
如果代码体部分只有一条语句,那么它还可以充当返回值,省掉return
concurrentHashMap

Socket 服务器实例
如下的Test是一个服务器程序
socket服务器

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值