package main
/*
Golang的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端程序必不可少也是最关重要的一部分。
网络编程有两种:
1)TCP socket编程,是网络编程的主流,之所以叫tcp socket编程,是因为底层是基于tcp/ip协议的,比如:qq聊天[示意图]
2)b/s结构体的http编程,我们使用浏览器取访问服务器时,使用的就是http协议,而http底层一九时用tcp socket实现的。[示意图]比如:京东商城[这属于go web开发范畴]
协议,通常先定义一个结构体
type mes struct{//消息
id int
con String
Sendtime string
Getter map(string)string
}
协议(tcp/ip)
TCP/ip(Transmission Control Protocol/internet Protcocol)的简写,中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,合格协议时internet最基本的协议、internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP的协议组成的。
OSI与tcp/ip参考模型(推荐tcp/ip协议3卷)
应用层 应用层 smtp,ftp,telnet http
表示层 传输层:解释数据
会话层 网络层:ip定位ip地址和确定链接路径
传输层
网络层
数据链路层 链路层:(link)与硬件驱动对话
物理层
osi模型(理论) tcp/ip模型(现时)
深入理解:qq间相互通讯的案例(trace追踪的意思,reacert路由)
ip地址
概述:每隔internet上的主机和路由器都有一个ip地址,它包裹网络号和主机号,ip地址由ipv4(32位)或者ipv6(128位),可以通过ipconfig来查看。
1.只要是做服务程序,都必须监听一个窗口
2.该端口就是其他程序和该服务通讯的通道
3.一台电脑有65535个端口
4.一旦一个端口被某个程序监听(占用),纳秒其他的程序就不能在该端口的监听
端口(port)-介绍
我们这里所指的端口不是指物理意义上的端口,而是特指Tcp/ip协议张的端口,时逻辑意义上的端口。
如果把ip地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个ip地址的端口可以由65536(即:256256)个之多!端口时通过端口来标记的,端口号只有整数,范围时从0-65535(256256-1)
0号时保留端口
1-1024时固定端口
又叫有名端口,即被某些程序固定使用,一般程序员不使用,
22:SSH远程登陆协议23:telnet使用21:ftp使用
25:smtp服务使用 80:iis使用 7:echo服务
1025-65535时动态端口
这些端口,程序员可以使用。
端口(port).使用注意
1)在计算机(尤其是做服务器)要尽可能的少开端口
2)一个端口只能被一个程序监听
3)如果使用netstat-an可以查看本机有那些端口在监听
4)可以使用netstat-anb来查看监听端口的pid,在结合任务管理器关闭不安全的端口
为了授课方法,我们将tcp socket编程,简称socket编程下图为Golang socket编程中客户端和服务器的网络分布
服务器端
客户端 客户端 客户端
conn.write(xx)
tcp socket编程的快速入门
服务端的处理流程
1)监听端口
2)接收客户端的tcp链接,建立客户端和服务器端的链接
3)创建goroutine,处理该链接的请求(通常客户端会通过链接发送请求包)
客户端的处理流程
1)建立于服务端的链接
2)发送请求数据,接收服务器端返回的结果数据
3)关闭链接
*/