一‘、网络基础

1.什么是IP

IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。

ip地址就像我们的家庭住址,每个机器都有自己独有的网络地址。

2.端口

"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口就是家里的大门。

3.TCP协议

TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。不用可以去解释这个东西,只要大概了解就行。

连接的三次握手

首先客户端(client)向服务端(servce)发送请求(第一次握手),服务端接受到请求后,告诉客户端我收到请求了(第二次握手),然后客户端也告诉服务端我收到请求了第三次)这样就可以进行数据传输了。

四次挥手

简单的理解四次挥手,第一次客户端发送断开连接要求,第二次服务端收到请求后还会继续传输数据,并不能直接发送断开指令,第三次才发送指令,第四次客户端收到断开指令后告诉服务端我收到了。

如果已经连接出现故障怎么办?

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75分钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

二、传输顺序

背下来哦

1.socket(套接字)层

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议

2.tcp和udp

TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;电子邮件、文件传输程序。

UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文,尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。

3.基于tcp的socket

发信息小程序

server

import socket
sk=socket.socket()
sk.bind(('127.0.0.1',8080))#绑定手机卡
sk.listen()#监听
conn,addr=sk.accept()
ret=conn.recv(1024).decode('utf-8')发信息
print(ret)
conn.send(bytes('你好啊',encoding='utf-8'))接受信息
conn.close()
sk.close()

client

import socket
sk=socket.socket()
sk.connect(('127.0.0.1',8080))
sk.send(bytes('你是大笨蛋',encoding='utf-8'))
ret=sk.recv(1024).decode('utf-8')
print(ret)
sk.close()

最新文章

  1. spring定时任务
  2. python序列化模块json和pickle
  3. 重新想象 Windows 8 Store Apps (39) - 契约: Share Contract
  4. ANativeWindow是个什么东西
  5. keep健身计划
  6. oracle触发农产品证明文件号码
  7. [译]Java 垃圾回收的监控和分析
  8. 23个适合Java开发者的大数据工具和框架
  9. WordPress让文本小工具支持简码
  10. CentOS7解决firefox无法启用ibus中文输入的问题
  11. 痞子衡嵌入式:ARM Cortex-M文件那些事(7)- 反汇编文件(.s/.lst/.dump)
  12. ORA-00471: DBWR process terminated with error案例
  13. resources中添加配置文件
  14. 【UOJ244】【UER #7】短路
  15. Python全栈之路----数据类型—字典
  16. Postgresql 密码设置
  17. 查杀病毒实战----------------》ddg.223 and AnXQV
  18. 015.4守护线程和join
  19. 【ML数学知识】极大似然估计
  20. [SimpleOJ239]Cards

热门文章

  1. JS数据类型判断的方法
  2. Python socket文件传送md5校验
  3. Windows下nginx+tomcat实现简单的负载均衡
  4. CF438E The Child and Binary Tree
  5. Learning-Python【17】:包的导入使用
  6. PHP中buffer的认知
  7. 聊聊Flume和Logstash的那些事儿
  8. 树状DP HDU1520 Anniversary party
  9. 『PyTorch x TensorFlow』第六弹_从最小二乘法看自动求导
  10. MVC实战之排球计分软件(深入了解面向对象编程)