计算网络原理和其中的tcp协议和udp协议

一、首先了解网络分层从高向下为:应用层->传输层->网络层->数据链路层->物理层

从它们功能进行划分如下:

这里面有很多名词要解释一下:

一、首先局域网(LAN):就好比国家 而广域网(WANW):就好比世界

二、集线器:只负责对数据的复制,所有主机都能收到(为了让目标主机收到数据,我们需要在数据中携带协议)如图所示

三、交换机:就是在寄存器的基础上,知道数据应该发给谁,只发给该主机

四、路由器:是划分多给LAN的设备,同时属于多个LAN

五、MAX地址、IP地址、端口 

MAX是硬件地址:  网卡生产中绑定的一个地址 物理地址

IP地址: 一个网络中,主机的ip地址唯一 (在一个网络中,唯一确定一个主机)(软件地址)

端口 (port) :主机内部的,唯一标识(在一个主机中,唯一确定一个进程) 

即max和ip可以在一个网络中绑定一个主机,ip和port可以绑定网络中的唯一进程

再引入一个知识点 四元信息和五元组

四元信息如图下:

五元组就是在四元信息基础上加一个协议(此是传输层协议(tcp/udp)) 

二、再LAN内部,以集线器为例解释封装和解包

 用qq进程来说封装j:应用层(用户发送你好)->到了传输层(有其的port=3388)->网络层(根据传输层的port确定ip=192.168.1.15)->数据链路层(根据ip确定max1)->物理层(传输介质)

解包:物理层(传输介质)->数据链路层(max3)(也会发给max2但是max不匹配,丢弃数据)->网络层(ip=192.168.1.13)->传输层(port=9956)(确定了是qq中的进程,并传输给对应的进程)->应用层(把你好呈现出来)

三、udp:以数据报文的形式传输(有多少穿多少,不能分割)没有传输   不可靠

 首先我们要知道请求响应模型:发送请求的角色(客户端) 发送响应的角色(服务器) (两个都是发送端和接受方)

udp就是实现请求响应模型,代码实现:

DatagramSocket 是UDP Socket,用于发送和接收UDP数据报。

DatagramSocket(int port)创建一个UDP数据报套接字的Socket,绑定到本机任意一个随机端口
(一般用于客户端)
DatagramSocket(int port)创建一个UDP数据报套接字的Socket,绑定到本机指定的端口(一般用于服务端)
DatagramSocketle 方法说明:

receive(DatagramPacket p)从此套接字接收数据报(如果没有接收到数据报,该方法会阻塞等待)
void send(DatagramPacketp)从此套接字发送数据报包(不会阻塞等待,直接发送)
void close() 关闭此数据报套接字
运用一下方法传输数据:
DatagramPacket(byte[]buf, int length)构造一个DatagramPacket以用来接收数据报,接收的数据保存在,字节数组(第一个参数buf)中,接收指定长度(第二个参数length)
DatagramPacket(byte[]buf, int offset, int length,SocketAddress address)构造一DatagramPacke以用来发送数据报,发送的数据为字节
数组(第一个参数buf)中,从0到指定长度(第二个参数length)。address指定目的主机的IP和端口号
获得地址和端口的方法:
InetAddress()、getAddress() 从接收的数据报中,获取发送端主机IP地址;或从发送的数据报中,获取接收端主机IP地址
int getPort()从接收的数据报中,获取发送端主机的端口号;或从发送的数据报中,获取接收端主机端口号

byte[] getData() 获取数据报中的数据 

四、tcp代码实现(可靠,有传输,面向字节流的,不是一次性发完的(不会原封不动的发送,可能被拼接或者拆封))
ServerSocket 是创建TCP服务端Socket的API。
ServerSocket 构造方法:ServerSocket(int port) 创建一个服务端流套接字Socket,并绑定到指定端口
ServerSocket的方法:
Socket accept() 开始监听指定端口(创建时绑定的端口),有客户端连接后,返回一个服务端Socket 对象,并基于该Socket建立与客户端的连接,否则阻塞等待
void close() 关闭此套接字

Socket 是客户端Socket,或服务端中接收到客户端建立连接(accept方法)的请求后,返回的服务端
Socket构造方法:Socket(String host, int port)创建一个客户端流套接字Socket,并与对应IP的主机上,对应端口的进程建立连接

Socket 方法:InetAddress getInetAddress() 返回套接字所连接的地址
                      InputStream getInputStream() 返回此套接字的输入流
                      OutputStream getOutputStream() 返回此套接字的输出流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值