开发者学堂课程【Go语言核心编程 - 面向对象、文件、单元测试、反射、TCP编程:TCP 编程快速入门案例分析】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9778
TCP 编程快速入门案例分析
内容介绍
一、端口(port)-使用注意
二、tcp socket 编程的客户端和服务器端
三、服务端的处理流程
四、客户端的处理流程
五、简单的程序示意图
一、端口(port)-使用注意
1.在计算机机(尤其做服务器)要尽可能的少开端口
如果发现端口无故被打开,说明是存在风险的,所以要尽量少开。
2.一个端口只能被一个程序监听
3.如果使用 netstat-an 可以查看本机有哪些端口在监听
4.可以使用 netstat-anb 来查看监听端口的 pid,在结合任务管理器关闭不安全的端口
可以通过这样看到,图上前面的135端口后面只要有 LISTENING 就说明正在监听,还有443端口正在监听等等。有些图片做了一些包装,一点击开就会直接安装,会随着电脑启动而启动,一般情况下电脑的管家是不一定会认为它是一个木马,有些程序却会被封。而图中的 vmware、FeiQ、ALibaba 等程序一般是被电脑管家认可的,它如何人去验证程序是正常的,因为像这些程序是有合法标识的。
二、tcp socket 编程的客户端和服务器端
为了授课方法,我们将 tcp socket 编程,简称 socket 编程,下图为 Golang socket 编程中客户端和服务器的网络分布。客户端可以有多个与服务器端连接,连接后的线就代表一个 tcp 链接,一旦连接好后,就可以形成一个“管道”。
在客户端输入数据(write),在服务器端就可以读取,而且客户端是可以区分的,是如何区分的,是通过下面这个图。
三、服务端的处理流程
1. 监听端口
比如说先设置8888
2. 接收客户端的 tcp 链接,建立客户端和服务器端的链接
3. 创建 goroutine(可以处理多个服务器需求),处理该链接的请求(通常客户端会通过链接发送请求包)
四、客户端的处理流程
1. 建立与服务端的链接
2. 发送请求数据(通过终端输入),接收服务器端返回的结果数据
3. 关闭链接
五、简单的程序示意图
这个服务器端在端口进行监听,比若说在8888这个端口正在监听,假设有一个客户端叫 a 客户端 client.go,它向端口8888发送了一个请求,它们之间建立了一个可以相互通讯的一个管道,数据也就在管道中流动。同样的,b 客户端 client.go 也可以和端口8888进行通讯,而真正为 a、b 客户端进行通讯服务的是协程的运作,这样的好处是在有多个客户端需要服务时,可以分别开不同的协程来与客户端建成联系。