计算机网络(1)

名称解析

名称解析:将名称解析成对应地址,名字-->IP

名称解析优点:便以记忆、解耦(断开直接的练习)

容器

mini的虚拟机,该容器地址是动态的、生命周期短暂;可实现登录功能

  • 如果用户想要登录该网站(用于该容器地址是变化的,地址不固定)
  • login固定名称->名称解析->对应当前动态ip地址

ARP解析:IP-->MAR

单点故障:一个点失败,全局业务都失败。

分布式DNS:

DNS

Domain Name System域名系统,应用层协议,跨网络通信

DNS不仅是一个软件,而且还需要与网络通信,故属于应用层协议

【有些软件并不需要与网络通信,故不属于应用层协议】

TCP/IP四层概念模型

应用层

传输层

网络层

数据链路层

socket-Server

Go 复制代码
package main

import (
	"fmt"
	"net"
	"strings"
)

func main() {
	//创建监听
	ip := "192.168.0.0"
	port := 0
	address := fmt.Sprintf("%s:%d", ip, port)
	listener, err := net.Listen("tcp", address)
	if err != nil {
		fmt.Printf("net.Listen err:", err)
		return
	}
	fmt.Printf("正在监听中...")
	conn, err := listener.Accept()
	if err != nil {
		fmt.Printf("net.accept err:", err)
		return
	}
	fmt.Printf("连接建立成功!")

	//创建一个容器,用于接受所读取到的数据
	buf := make([]byte, 1024) //使用make来创建切片byte=uint8
	//cnt真正读取client发来的数据
	cnt, err := conn.Read(buf)
	if err != nil {
		fmt.Printf("conn.Read err:", err)
		return
	}
	fmt.Printf("client --> server,lenth:", cnt, "context:", string(buf))

	//服务器对客户端请求进行响应
	//将数据转换成大写 "hello"--> "HELLO"
	//func ToUpper(s string) string
	upperData := strings.ToUpper(string(buf)) //服务端对客户端进行响应
	cnt, err = conn.Write([]byte(upperData))  //Write(b []byte) (n int, err error)   将字符串类型转换成切片类型
	fmt.Println("Client  <===== Server,responce_lenth", cnt, "responce_context", upperData)
	conn.Close() //关闭连接
	//net.Listen("tcp", ":8848") //简写,冒号前面默认是本机
}

将IP地址和port端口号进行更改,要不然会出现这种错误

如何查看本机电脑的ip和端口号呢?

step1:这个步骤只是看到IP地址,并没有看见端口号

step2:如果有wireshark软件,直接打开网络监听,可以看到各种各样的ip和port

找到与ipconfig中IPv4地址一样的IP对应的端口号。

该server服务器只能进行一次监听。

socket-client

Go 复制代码
package main

import (
	"fmt"
	"net"
)

func main() {
	conn, err := net.Dial("tcp", "192.168.0.0:0") //指定ip和端口号
	if err != nil {
		fmt.Println("net Dial err", err)
		return
	}
	fmt.Println("client 与 server连接建立成功")

	//向服务器发送数据
	sendData := "helloworld"
	cnt, err := conn.Write([]byte(sendData))
	if err != nil {
		fmt.Println("conn.Write err", err)
		return
	}
	fmt.Println("Client --> Server cnt:", cnt, "    data:", sendData)

	//接收之后,服务器给客户端返回响应
	buf := make([]byte, 1024) //用于接收服务器返回的响应
	cnt, err = conn.Read(buf)
	if err != nil {
		fmt.Println("conn.Read err", err)
		return
	}
	fmt.Println("Client <===== Server,cnt:", cnt, "    data:", string(buf[0:cnt])) //string(buf[0:cnt])范围从0~cnt
}
相关推荐
liulilittle20 小时前
删除 Inflight Bounds:为什么 KCC 放弃了 BDP 钳位
linux·网络·tcp/ip·计算机网络·信息与通信·tcp·通信
爱讲故事的21 小时前
计算机网络第 8 章复习:Network Security 网络安全
网络·计算机网络·web安全
San813_LDD1 天前
[HTTPS/TCP]从文件索引到HTTP服务:Everything局域网共享文件实战
运维·tcp/ip·计算机网络·https
酉鬼女又兒2 天前
零基础入门计算机网络:网络层核心任务、三大关键问题、两种服务类型与 TCP/IP 网际层协议体系全解析
服务器·网络·网络协议·tcp/ip·计算机网络·php·求职招聘
爱讲故事的2 天前
计算机网络第七章:无线与移动网络复习笔记
网络·笔记·计算机网络
梁辰兴2 天前
计算机网络基础:具有集中目录服务器的 P2P 工作方式
服务器·网络·计算机网络·计算机·p2p·计算机网络基础·梁辰兴
酉鬼女又兒2 天前
零基础入门计算机网络:集线器与交换机区别、以太网交换机自学习转发流程及生成树协议STP全解析
服务器·网络·网络协议·tcp/ip·计算机网络·考研·职场和发展
liulilittle3 天前
TCP KCC v1.0(卡尔曼拥塞控制)
linux·服务器·网络·tcp/ip·计算机网络·tcp·通信
梁辰兴3 天前
计算机网络基础:动态主机配置协议 DHCP
网络·计算机网络·dhcp·计算机网络基础·动态主机配置协议·梁辰兴
梁辰兴3 天前
计算机网络基础:简单网络管理协议 SNMP
网络·计算机网络·计算机·snmp·计算机网络基础·梁辰兴·简单网络管理协议