网络协议、客户端与服务器

网络协议

概述
在计算机网络中要做到有条不紊地交换数据,就必须遵守一些事先约好的规则。这些规则明确规定了交换的数据的格式以及相关的同步问题。这里说的同步不是狭义的(即同频或同频同相)而是广义的,即在一定是条件下应当发生什么事件(如发送一个应答信息),因而同步含有时序的意思。这些为进行网络中的数据交换而建立的规则、标准或约定称为网络协议,简称协议。主要有三个要素组成
(1)语法,即数据与控制信息的结构或格式
(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
(3)同步:即事件实现顺序的详细说明。
TCP/IP的体系结构
在这里插入图片描述

应用层常见协议
http 超文本传输协议(访问网页)
telnet 远程登录
ssh 远程登录(保证安全)
运输层协议
打包和确定目的应用程序
TCP:保障数据的可靠有序, 使用广泛
UDP :不保证数据数据的可靠有序,所以速度快
网络层IP
网络层主要负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据 报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称数据报。
ip协议:网络地址协议
网络接口层
在TCP/IP模型中,网络接口层对应ISO/OSI参考模型的物理层和数据链路层。
数据链路层协议执行的主要任务
(1)管理对所使用的任何联网介质的访问,称为介质访问控制(MAC),与传输媒体有关
(2)创建一对MAC层地址之间点到点的临时连接以传输数据,称为逻辑链路控制

客户端与服务器

客户端
Telnet 、浏览器
Socket
传输层 TCP
创建Scoket new Socket(“ip地址”, 端口号);
socket.getOutputStream(); // 发数据
socket.getInputStream(); // 收数据
URL (*)
创建 new URL(“http://ip地址:端口/资源地址”)
HTTPURLConnection conn = url.openConnection(); // 建立连接, 发送get请求
conn.getInputStream(); // 拿到服务器返回的结果
服务器端
ServerSocket 服务器
new ServerSocket(端口号); // 每个程序只能占用一个端口, 自己的程序用4位以上的端口
.accept(); // 等待, 直到客户端连接为止
new Thread(new Runnable(){
public void run() {
// 把io相关的操作放在线程内执行,让每个线程处理一个io操作,避免io阻塞
}
}).start();
遇到问题:阻塞io的特点,一个socket执行io读写操作会阻塞其它io的读写
解决方法:一个线程内io的读写是串行的,可以用多线程的方法来解决, 建议使用线程池而不是自己手动创建线程
lambda表达式
参数部分 特殊符号 方法体
new Thread(() -> {}).start();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值