网络编程

目录:

    软件架构

    网络协议(外链)

    通讯协议

    网络层

    传输层

    socket

    TCP传输

    UDP传输

    简易聊天室

    通讯与连接循环

软件架构:

1.C/S
    client ==== server
2.B/S
    browser === server
在不同的计算机上,一个安装客户端,另一安装服务端,通过网络来通讯.
client<---基于网络通信--->server
browser<---基于网络通信--->server

server端必须满足的条件:
1、稳定运行(网络、硬件、操作系统、服务端应用软件),对外一直提供服务
2、服务端必须绑定一个固定的地址

网络通讯:

互联网要完成通讯必须具备的条件
  1.物理连接介质 (网线,WIFI,光纤)
  2.必须遵循相同的标准,即互联网协议
在计算机网络中同样需要具备这两个条件.
作为应用软件开发者,不需要关心第一步,重点是通讯的标准(通讯的协议)

 通讯协议:

自定义协议:
  任何一种通信协议都必须包含两部分:
  1、报头:必须是固定长度
  2、数据
osi七层协议:
    应用
    表示
    会话
    传输
    网络
    数据链路层
    物理

程序员需要关注的是传输层协议. 简化后得到五层: 应用: 没有固定协议,需要程序员协商 传输: TCP和UDP,通讯协议 网络: ip协议,找到局域网 数据链路层: 以太网协议,发送二进制的格式 物理: 接口协议,发送二进制

osi之网络层:

ip用来定位子网的网关,mac用来定位子网中的计算机.
已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算.

172.16.10.1: 10101100.00010000.00001010.00000001 255.255.255.255.0: 11111111.11111111.11111111.00000000 子网地址: 10101100.00010000.00001010.00000000 172.16.10.0 172.16.10.2: 10101100.00010000.00001010.00000001 255.255.255.255.0: 11111111.11111111.11111111.00000000 子网地址: 10101100.00010000.00001010.00000000 172.16.10.0
AND运算之后结果相同,说明是属于同一子网.
标识地址的方式:
ip+mac就能标识全世界范围内独一无二的一台计算机
ip+mac+port就能标识全世界范围内独一无二的一个基于网络通信的应用软件
url地址:标识全世界范围内独一无二的一个资源

以太网协议与ip协议:

大型局域网:由小局域网互联而成

 

 

osi之传输层:

   传输层功能:建立端口到端口的通信(端口范围0-65535,0-1023为系统占用端口)

 TCP协议: 

 三次握手建立连接
 四次挥手断开连接
  1、为何建连接要三次而断开连接却需要四次
  2、为何tcp协议是可靠协议,而udp协议是不可靠协议
  3、tcp协议建立连接与断开连接的状态信息以及表示的意义

 图示:

TCP和UDP是传输层最常见的协议
主要控制传输数据的方式
TCP
优点:通过三次握手来与服务器建立连接
可以保证数据的完整性
a机器给b机器发送数据包 要求b机器必须立即返回一个确认包
a机器会等待一段时间,如果超时还没有收到确认,则重发数据
缺点:传输效率低
使用场景: 文字聊天,支付宝转账等,
UDP
传输方式:不需要建立连接,直接发送
缺点:不能保证数据的完整性
优点:传输效率比TCP高
使用场景:视频通话,语音通话,UDP

socket套接字:

socket是什么?
    翻译过来称为套接字
    是对底层的 TCP IP UDP 等网络协议进行封装
    使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议
在程序员的言论,他就是一个封装好的模块!
要完成网络通讯,只需要使用系统提供的socket模块就行
在使用socket的时候用户需要关心的是ip地址,port端口, 传输协议TCP/UDP,你要发送的数据data
在写网络编程的时候,必然是有两部分代码,对应着客户端和服务器
posted @ 2018-11-01 17:01  ChuckXue  阅读(199)  评论(0编辑  收藏  举报