网络编程之socket

1>先上概念

    众所周知,通络通信是依据 IP+mac,就是只要有这两样东西,基本就能定位到唯一一台主机,实现通信

这些暂时不必深究,因为设置好这些,操作系统会处理好后续的事(也就是历经网络层,数据链路层,物理层,

层层封装再发送数据),我们要考虑的是,如果已经定位到一台主机,那如何访问到某个主机上的应用呢(比如

电脑开启了qq,word,迅雷等等),这个时候就靠传输层拉,其实每个运行在操作系统上的应用软件,都有一

个对应的端口号(端口范围 0~65535,其中前1024个是保留位,给系统软件用的,之后的就是给应用软件用的),

那也就是说只要确认了 IP,mac,端口号,就能定位到一台计算机上的一个应用软件,其中mac是网卡的唯一地址,

网卡制成就有了(12位16进制数,前6位是厂商地址,后6位是流水号),而且这个地址会用网络协议ARP自动去找寻,

所以,基于应用软件的通信,其实我们只需要考虑IP和端口就行了。

    先回顾下TCP通信的三次握手和4次挥手(初始建立通道时:A发请求B建立连接,B收到后回复A同意建立并且发请求给A

 建立连接,A收到后回复同意建立;断开连接时:A发请求说数据已经传输完毕,请求断开连接,B收到后回应同意断开,B发请求给A说数据已传输完毕,请求断开连接,A收到后回应同意断开),为什么建立通信是3次而断开是4次,因为一开始无数据交互时,A,B就是为了建立连接而发的请求,建立时其中第二次其实包含两个动作(B回应A允许建立,B发请求A建立通道),两步写到合并到一起了;而断开时,B回应A允许断开时,此时B发往A的数据可能并没有传输完,不可能说A发请求断开,B也跟着一起断开,这两件事是独立都,都是基于数据传完才开始的,所以断开第二步和第三步就不能合并。

    基于应用层的软件要通过传输层进行通信,具体的实现过程是什么呢?我应该怎么操作才能把数据封装成tcp/ip的包,

又执行什么指令才能把数据发到对端机器上呢,此时,socket就出现了。

    Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模

式,它把复杂的TCP/IP协议族隐藏在Socket接口后面

    简而言之,socket就是帮你把tcp/ip协议层的各种数据封装啦、数据发送、接收等通过代码已经给你封装好了,你只需要调用几行代码,就可以给别的机器发消息了。


2>简单的socket通信(如下,看注释模拟一个打电话场景,就很好理解了)

    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值