一.网络编程基本介绍
Golang的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端程序必不可少也是至关重要的一部分。
网络编程有两种:
1.TCP socket编程:是网络编程的主流。之所以叫TCP socket编程,是以为底层是基于TCP/IP协议的。
2.b/s结构的HTTP编程,我们使用浏览器去访问服务器时,使用的就是http协议,而HTTP底层依旧是用tcp socket实现的 (属于go web开发范畴)
协议(TCP/IP)
TCP/IP协议,称为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是internet最基本的协议、internet国际互联网络的基础,就是由网络传的IP协议和传输层的TCP协议组成的。
IP地址
每个internet上的主机和路由器都有一个IP地址,它包括网络号和主机号,IP地址有ipv4(32位)或者ipv6(128位),可以通过ipconfig来看。
端口
我们这里所指的端口不是指物理上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。
如果把IP地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个ip地址的端口可以有65536(256×256)个之多,端口是通过端口号来标记的,端口号只有整数,范围是从0到65535(256×256-1)
端口分类(port)-分类
1.0号是保留端口
2.1-1024是固定端口,又叫有名端口,即被某些程序固定使用,一般程序员不使用。
22:SSH远程登录协议 23:tenIet使用 21:ftp使用
25:smtp服务使用 80:iis使用 7:echo服务
3.1025-65535是动态端口
这些端口,程序员可以使用。
端口(port)-使用注意
1.在计算机(尤其是做服务器)要尽可能的少开端口
2.一个端口只能被一个程序监听
3.如果使用netstat -an可以查看本机有哪些端口在监听
4.可以使用netstat -anb来查看监听端口的pid,在结合任务管理器关闭不安全的端口。
tcp socket编程的快速入门
服务端的处理流程
1.监听端口
2.接收客户端的tcp连接,建立客户端和服务器端的链接。
3.创建goroutine,处理该链接的请求(通常客户端会通过链接发送请求包)
客户端的处理流程
1.建立与服务端的链接
2.发送请求数据[终端],接收服务器端返回的结果数据
3.关闭链接
案例
客户端功能:
1.编写一个客户端程序,能连接到服务器端的8888端口
2.客户端可以发送单行数据,然后就退出
3.能通过终端输入数据(输入一行发送一行),并发送给服务器端
4.在终端输入exit表示退出程序。