.互联网协议

互联网协议又称为网络七层协议,OSI七层协议,OSI是一个世界标准组织。

OSI七层协议:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理连接层 学习由下到上:
需要优先了解的协议一共5层: - 物理连接层
基于电信号发送二进制的数据0101010111。 - 数据链路层
数据链路层的 "以太网协议",专门用于处理基于电信号发送二进制的数据。 以太网协议:
1.规定好电信号数据的分组方式。
2.每一台连接网线的电脑都必须要由一块 "网卡"。
- 网卡由不同厂商生产的
- 每块网卡都会有世界上独一无二12位的编号 "mac"地址。
- 前6位: 厂商号
- 后6位: 流水号 - 交换机:
可以让多台电脑连接到一起。 基于以太网协议发送数据:
特点:
广播、单播 弊端:
广播风暴、不能跨局域网通信。 - 互联网:
让局域网之间进行通信。 - 网络层
IP地址: 用于标识唯一的一台计算机(局域网)的地址。
IP: 点分十进制
最小值: 0.0.0.0
最大值: 255.255.255.255 IPV4(了解):
一开始用电脑的人不多,所以出现IPV4的协议版本。 IPV6(了解):
括号IP。 本机IP: 回环地址 127.0.0.1 ---> localhost - 传输层
TCP/UDP协议,他们都是基于端口工作的。 - 端口号: 标识电脑上某个一个软件。 - 端口号范围: 0-65535 注意:
1.操作系统中,一般0-1024的端口都被默认使用了(0-1024不要动)
2.尽量使用8000之后的端口号 8001 开发中常用软件的默认端口号 (默写) :
mysql: 3306
mongodb: 27017
Django: 8000
Tomcat: 8080
Flask: 5000
Redis: 6379 若想服务端与客户端进行通信,必须要建立连接,产生双向通道。
一条是客户端往服务端发送消息的。
另一条是服务端往客户端发送消息的。 - 应用层
http
ftp

总结:

ip:用于唯一标识某一台计算机的位置。

port: 端口用于确认计算机上的一个应用软件。

ip + port: 世界上某一台电脑上的一个应用软件。
  • TCP协议的工作原理:

    • TCP是一个流式协议

    • 三次握手,四次挥手(*******):

      • 三次握手建连接:

        建立双向通道,建立好连接。

        • listen: 监听
        • established: 确认请求建立连接
      • 发送数据:

        write

        read

        客户端往服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放掉。

        否则,会隔一段时间发送一次,让服务端返回确认收到。

        在一段时间内,若服务端还是不返回确认收到,则取消发送。并释放内存中的数据。

      • 四次挥手断连接:

        • TIME_WAIT: 时间等待

5.Socket:

1.什么是Socket?
socket是一个模块,可以写一套C/S架构的套接字。 2.为什么要使用Socket?
socket套接字会封装好各层协议的工作。
好处:
可以节省开发成本。 3.如何使用
import socket

注意: 客户端与服务端必须尊循:

一端send,另一端recv

不同两端同时send或recv

网络编程与socket的更多相关文章

  1. java基础-网络编程(Socket)技术选型入门之NIO技术

    java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...

  2. python 网络编程:socket(二)

    上节地址:Python网络编程:socket 一.send和sendall区别 send,sendall         ret = send('safagsgdsegsdgew') #send 发送 ...

  3. Linux高并发网络编程开发——10-Linux系统编程-第10天(网络编程基础-socket)

    在学习Linux高并发网络编程开发总结了笔记,并分享出来.有问题请及时联系博主:Alliswell_WP,转载请注明出处. 10-Linux系统编程-第10天(网络编程基础-socket) 在学习Li ...

  4. 网络编程与socket套接字

    网络编程与socket套接字 传输层 PORT协议 port是一种接口,数据通过它在计算机和其他设备(比如打印机,鼠标,键盘或监视器)之间,网络之间和其他直接连接的计算机之间传递 TCP协议 ​ 传输 ...

  5. linux网络编程-(socket套接字编程UDP传输)

    今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...

  6. 浅谈TCP/IP网络编程中socket的行为

    我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...

  7. iOS 网络编程:socket

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  8. iOS网络编程笔记——Socket编程

    一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是T ...

  9. python 网络编程(Socket)

    # from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...

  10. 网络编程,socket

    1.网络编程 网络: TCP/IP 彼此之间遵守协议和规范!之间才能产生通信! IP: 每个人都有自己的身份证号! 用来标识我们网络中每一台计算机! IP地址= 网络地址 +主机地址 网络地址 :标识 ...

随机推荐

  1. python基础知识(元组)

    元组 不能更改内容 元组 (元素1,元素2) 元组的创建和删除 使用赋值运算符直接创建元组 元组名 = (元素1,元素2........) 只创建一个元素的元组    元组名 = (元素1,) 创建空 ...

  2. PHPBase64格式编码图片

    base64_encode编码图片 /** * 获取图片的Base64编码(不支持url) * @date 2017-02-20 19:41:22 * * @param $img_file 传入本地图 ...

  3. elasticsearch 7.x 如何满足mysql中的模糊查询功能(like)

    业务场景:筛选项原功能是用mysql左模糊进行过滤查询,现业务要用es,怎么样才能满足原功能,又不损性能. elasticsearch中有关于模糊查询的操作:wildcard 文档:https://b ...

  4. analyticdb(ADB) group by 用法小结

    虽说analyticdb(ADB)是支持mysql协议的,但有些具体细节用法是有些区别. 1.group by 字段 mysql group by select id,title,describe w ...

  5. 浅谈Linux cp命令

    Linux 的cp命令 功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若 ...

  6. oracle数据段详解

    Tablespace(表空间):表空间是数据库的逻辑划分,一个表空间只能属于一个数据库.所有的数据库对象都放在指定的表空间中,但主要存放的对象是表,所以称为表空间. 默认的系统表空间:system.s ...

  7. 四则运算计算器的微信小程序_2 运算

    js文件: function isOperator(value) {   var operatorString = '+-*/()×÷';   return operatorString.indexO ...

  8. 【2017.12.02】C组比赛总结

    这次考得不怎么样,只有200分! T1:读书 这题水水水! 这题就是一道循环题嘛! 直接一边循环一边做就好了! T2:恐怖分子 这题我是直接暴力的. 这题就是求至少用多少条经过(x0,y0)的不同直线 ...

  9. yield浅析-Python3

    yield 浅析 先来一段代码: def fun1(): for i in range(5): yield i print("继续调用继续执行") gen1 = fun1() pr ...

  10. Vue2.X 通过 ajax 获取 API 数据(非 axios)

    不多废话,笔记如下 1. javascript: let vm = new Vue({ el: '#card-text', data: { info: '' }, beforeCreate: func ...