1.网络基本介绍

1.1网络编程有两种

● TCP socket编程,是网络编程的主流,底层是基于Tcp/ip协议。比如QQ
● b/s结构的http编程,使用浏览器访问服务器时,使用的就是http协议,而http协议底层依旧是用tcp socket实现的

1.2 协议tcp/ip

TCP/IP (Transmission Control Protocol/Internet Protocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。

1.3OSI与TCP/IP参考模型

在这里插入图片描述
在这里插入图片描述

1.4 IP地址

每个internet上的主机和路由器都有一个ip地址,它包括网络号和主机号,IP地址有ipv4(32位)和ipv6(128位)

1.5端口port

● 这里的port不是指物理上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口
● 如果把P地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:256×256)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0到65535(256×256-1)
在这里插入图片描述

1.6端口分类

1.7端口注意事项

● 在计算机尤其是服务器要尽可能的少开端口
● 一个端口只能被一个程序监听
● 如果使用netstat - an可以查看本机有哪些端口在监听
● 可以使用netstat - anb来查看监听端口的pid,在结合任务管理器关闭不安全的端口

2.tcp socket编程快速入门

2.1服务端处理流程

1)监听端口8888
2)接收客户端的 tcp链接,建立客户端和服务器端的链接.
3)创建goroutine,处理该链接的请求(通常客户端会通过链接发送请求包)

2.2客户端处理流程

1)建立与服务端的链接
2)发送请求数据[终端],接收服务器端返回的结果数据
3)关闭链接

2.3示意图

在这里插入图片描述

2.4代码实现

server.go

client.go

运行结果

在这里插入图片描述