《网络与部署》课程笔记1 | 青训营笔记
网络接入和网络传输
在学习Go语言时,理解网络接入和网络传输的概念是非常重要的。网络接入是指计算机与互联网之间建立连接的过程,而网络传输则涉及数据在网络中的传递和交换。
1. 网络接入
网络接入是通过网络协议和相关设备将计算机连接到互联网的过程。常见的网络接入方式包括有线连接和无线连接。
- 有线连接:有线连接是通过以太网或其他物理媒介将计算机与路由器或调制解调器相连接。以太网是一种常见的有线网络技术,它使用网线将计算机连接到路由器或者局域网中。通过这种方式,计算机可以通过路由器访问互联网。
- 无线连接:无线连接是通过Wi-Fi技术将计算机连接到无线路由器或热点。Wi-Fi技术使用射频信号来实现无线通信,使得计算机可以通过无线网络连接到互联网。
2. 网络传输
网络传输涉及数据在网络中的传递和交换。在计算机网络中,常见的网络传输协议包括TCP(传输控制协议)和UDP(用户数据报协议)。
- TCP:TCP是一种面向连接的可靠的传输协议。它通过建立连接、分段、序列号和确认等机制来确保数据传输的可靠性。在Go语言中,可以使用net包提供的相关函数和方法进行TCP网络编程。
- UDP:UDP是一种无连接的不可靠的传输协议。与TCP不同,UDP不需要建立连接,也没有确认机制。它主要用于实时的数据传输和广播。在Go语言中,也可以使用net包提供的相关函数和方法进行UDP网络编程。
在编写网络程序时,还需要了解套接字(Socket)的概念。套接字是计算机间进行网络通信的接口,它定义了数据传输的端点。在Go语言中,可以使用net包中的相关类型和函数来创建和操作套接字。
下面是一个简单的示例代码,演示了在Go语言中如何通过TCP协议进行网络传输:
package main
import (
"fmt"
"net"
)
func main() {
// 定义服务器地址
address := "127.0.0.1:8080"
// 监听端口
listener, err := net.Listen("tcp", address)
if err != nil {
fmt.Println("Error listening:", err.Error())
return
}
defer listener.Close()
fmt.Println("Server is listening on", address)
// 接收连接请求
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting:", err.Error())
return
}
defer conn.Close()
fmt.Println("Client connected:", conn.RemoteAddr().String())
// 处理数据传输
buf := make([]byte, 1024)
for {
// 读取客户端发送的数据
n, err := conn.Read(buf)
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
// 将收到的数据发送回客户端
_, err = conn.Write(buf[:n])
if err != nil {
fmt.Println("Error writing:", err.Error())
return
}
}
}
这个示例代码创建了一个简单的TCP服务器,监听本地的8080端口。它接受客户端的连接请求,并将收到的数据原样返回给客户端。