go系列-笔记(第六天)

Posted xiangjai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go系列-笔记(第六天)相关的知识,希望对你有一定的参考价值。

目录

    协议:

    网络分层架构:

    各层功能:

    数据通信过程:

    网络应用设计模式:

    TCP通信过程:

 分析图:


    协议:

    一组规则。要求使用协议的双方,必须严格遵守协议内容。


    网络分层架构:

    OSI七层模型结构体:物、数、网、传、会、表、应
    TCP/IP四层模型:数、网、传、应


    各层功能:


    链路层:ARP
    源mac——目标mac
    ARP协议作用:借助IP获取mac地址。
    网络层:IP
    源IP——目标IP
    IP协议的作用:在网络环境中唯一标识一台主机。
    IP地址本质:2进制数。——点分十进制IP地址(string)
    传输层:TCP/UDP
    port——在一台主机上唯一标识一个进程。
    应用层:ftp、http、自定义
    对数据进行封装。解封装。


    数据通信过程:


    封装:应用层——传输层——网络层——链路层。没有经过封装的数据,不能在网络环境中传递。
    解封装:链路层——网络层——传输层——应用层
    总结通信过程:
    1.mac地址(不需要用户指定)(ARP协议)Ip——>mac
    2.IP地址(需要用户指定)——确定主机
    3.port端口号(需要用户指定)——确定程序
    1.不能使用系统占用的默认端口。5000+端口我们使用(8080)
    2.65535为端口上限。
    socket:套接字。
    网络通信过程中,socket一定是成对出现的。


    网络应用设计模式:


    C/S:
    优点:数据传输效率高、协议选择灵活
    缺点:工作量大、安全性构成威胁
    B/S:
    优点:开发工作较小、不受平台限制、安全威胁小
    缺点:缓存数据差、协议选择不灵活、
    TCP-CS服务器:
    1.创建监听socketlistener:=net.Listen("TCP","IP+port")IP+port——服务器自己的IP和port
    2.启动监听conn:=listener.Accept()conn用于通信的socket
    3.conn.Read()
    4.处理使用数据
    5.conn.Write()
    6.关闭listener、conn
    nc工具环境变量配置。
    1.解压netcat-win32-1.12.zip文件到指定目录
    2.拷贝解压后目录,保存到环境变量:
    方法:我的电脑-->属性-->高级系统设置-->环境变量-->系统变量中找“path”-->双击它-->新建-->粘贴
    3.启动cmd执行nc命令充当客户端测试
    4.nc127.0.018000(注意IP和端口之间是“空格”)
    5.输入hellosocket。服务器应该能读到并向服务器的屏幕打印“hellosocket”
    TCP-CS客户端:
    1.conn,err:=net.Dial("TCP",服务器的IP+port)
    2.写数据给服务器conn.Write()
    3.读取服务器回发的数据conn.Read()
    4.conn.Close()
    TCP-CS并发服务器:
    1.创建监听套接字listener:=net.Listen("tcp",服务器的IP+port)//tcp不能大写
    2.deferlistener.Close()
    3.for循环阻塞监听客户端连接事件conn:=listener.Accept()
    4.创建go程对应每一个客户端进行数据通信goHandlerConnet()
    5.实现HandlerConnet(connnet.Conn)
    1)deferconn.Close()
    2)获取成功连接的客户端Addrconn.RemoteAddr()
    3)for循环读取客户端发送数据conn.Read(buf)
    4)处理数据小——大strings.ToUpper()
    5)回写转化后的数据conn.Write(buf[:n])
    服务器判断关闭:
    Read读客户端/服务器,返回0——对端关闭!
    nc命令发送数据时,默认在结尾自带‘\\n’
    TCP-CS并发客户端:
    1.匿名go程,获取键盘输入,写给服务器
    2.for循环读取服务器回发数据
    发送数据时,默认在结尾自带‘\\r\\n’


    TCP通信过程:


    三次握手:
    1.主动发起请求端,发送SYN
    2.被动建立连接请求端,应答ACK同时发送SYN
    3.主动发起请求端,发送应答ACK
    标志TCP三次握手建立完成。——server:Accept()返回。——client:Dial()返回。
    四次挥手:
    1.主动关闭连接请求端,发送FIN
    2.被动关闭连接请求端,应答ACK
    标志。半关闭完成。——close()
    3.被动关闭连接请求端,发送FIN
    4.主动关闭连接请求端,应答ACK
    标志。四次挥手建立完成。——close().

 

    分析图:

并发网络通信

 通信过程

 

协议

socket

TCP-CS通信

TCP三次握手 4次挥手

 

以上是关于go系列-笔记(第六天)的主要内容,如果未能解决你的问题,请参考以下文章

Linux课程第六天学习笔记

python学习笔记之类class(第六天)

python学习笔记:第六天(流程控制语句)

Python全栈开发学习笔记-06.第六天

OC第六天笔记2016年03月21日(周一)A.M

大白鱼备考云笔记第二冲刺阶段第六天