计算机网络 IP 协议

IP 协议是 TCP/IP 协议族中最为核心的协议,更确切的说是网络层重要的协议之一。

IP 协议把上层数据报封装成 IP 数据报后进行传输,如果 IP 数据报太大,还要对数据报进行分片后再传输,到了目的地址处再进行组装还原,以适应不同物理网络对一次所能传输数据大小的要求。

IP协议具有以下几个显著的特点:

  • 不能保证 IP 数据报能成功地到达目的地。IP 协议仅提供最好的传输服务,如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP 有一个简单的错误处理算法:丢弃该数据报,然后发送 ICMP 消息报给信源端。任何要求的可靠性必须由上层协议来提供(如TCP协议)。
  • IP 协议并不维护任何关于后续数据报的状态信息,每个数据报的处理是相互独立的。这也说明,IP数据报可以不按发送顺序接收。例如,如果一信源向相同的信宿发送两个连续的数据报(先是 A,然后是 B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此 B 可能在 A 之前先到达。
阅读更多

Java UDP 实现

01.客户端发送数据

  • 客户端发送数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
* 端口号
*/
private static final int PORT = 8080;

/*
* UDP协议发送数据:
* 1.创建发送端Socket对象
* 2.创建数据,并把数据打包
* 3.调用Socket对象发送方法发送数据包
* 4.释放资源
*/
private void udpSendMessage(String serverAddress) {
String content = "yang";
// 创建发送端Socket对象
try {
// 创建发送端Socket对象
DatagramSocket ds = new DatagramSocket();
// 创建数据,并把数据打包
byte[] bys = content.getBytes();
InetAddress byName = InetAddress.getByName(serverAddress);
DatagramPacket dp = new DatagramPacket(bys, bys.length,byName ,PORT);
// 调用Socket对象发送方法发送数据包
ds.send(dp);
// 释放资源
ds.close();
} catch (Exception e) {
e.printStackTrace();
}
}
阅读更多

计算机网络

01.三次握手原理图

  • 第一次:发送SNY=1表示此次握手是请求建立连接的,然后seq生成一个客户端的随机数X
  • 第二次:发送SNY=1,ACK=1表示是回复请求建立连接的,然后ack=客户端的seq+1(这样客户端收到后就能确认是之前想要连接的那个服务端),然后把服务端也生成一个代表自己的随机数seq=Y发给客户端。
  • 第三次:ACK=1。 seq=客户端随机数+1,ack=服务端随机数+1(这样服务端就知道是刚刚那个客户端了)
    image
阅读更多

计算机网络 TCP的数据传输

01.先看TCP特点

  • ②TCP协议:
    • 必须建立连接,形成传输数据的通道
    • 在连接中可进行大数据量传输
    • 通过三次握手完成连接,是可靠协议
    • 必须建立连接,效率会稍低
  • 那么你知道为tcp如何保证传输是可靠的,为何效率会低一些?

02.如何保证可靠传输

阅读更多

计算机网络 Socket

Socket简单介绍

  • Socket简单介绍
    • Socket就是为网络服务提供的一种机制
    • 通信的两端都有Socket
    • 网络通信其实就是Socket间的通信
    • 数据在两个Socket间通过IO传输
    • 玩Socket主要就是记住流程,代码查文档就行
    • Socket的简单使用的话应该都会,两个端各建立一个Socket,服务端的叫ServerSocket,然后建立连接即可。
阅读更多

计算机网络 TCP

TCP的特点

TCP的全称是指传输控制协议(Transmission Control Protocol)。它是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

  • 具备的特点
    • TCP是面向连接的传输层协议。
    • TCP连接是点对点的(套接字–IP:Port到套接字)。
    • TCP提供可靠交付的服务。
    • TCP提供全双工通信。
    • 面向字节流。
阅读更多

计算机网络 ARQ

什么是ARQ协议

  • ARQ协议(自动重传请求)是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。

停止等待ARQ

  • 发送点对接收点发送数据包,然后等待接收点回复ACK并且开始计时。
  • 在等待过程中,发送点停止发送新的数据包。
  • 当数据包没有成功被接收点接收时候,接收点不会发送ACK.这样发送点在等待一定时间后,重新发送数据包。
阅读更多

计算机网络 数据包处理

案例

  • 假设甲给乙发送邮件,内容为:“早上好”。而从 TCP/IP 通信上看,是从一台计算机 A 向另一台计算机 B 发送邮件。我们通过这个例子来讲解一下 TCP/IP 通信的过程。
    • image

数据包的发送处理

阅读更多

计算机组成原理 概述

计算机系统

计算机系统由硬件(Hardware)系统和软件系统两大部分组成。

img

计算机发展历史:
第一代计算机(1946-1957):电子管时代
第二代计算机(1958-1964):晶体管时代
第三代计算机(1965-1970):集成电路时代
第四代计算机(1871以后):大规模继承电路时代

阅读更多

计算机组成原理 CPU MESI协议 缓存一致性问题

多核CPU里的每一个CPU核,都有独立的属于自己的L1 Cache和L2 Cache。多个CPU之间,只是共用L3 Cache和主内存。

我们说,CPU Cache解决的是内存访问速度和CPU的速度差距太大的问题。而多核CPU提供的是,在主频难以提升的时候,通过增加CPU核心来提升CPU的吞吐率的办法。我们把多核和CPU Cache两者一结合,就给我们带来了一个新的挑战。因为CPU的每个核各有各的缓存,互相之间的操作又是各自独立的,就会带来缓存一致性(Cache Coherence)的问题。

阅读更多