今日主要内容:

一.网络通信协议

二.tcp udp协议下的socket

一.网络通信协议

1.1互联网的本质就是一系列的网络协议

本机IP地址('127.0.0.1',xxxx)

互联网连接的电脑互相通信的是电信号,

互联网协议的功能: 定义计算机如何接入Internet ,以及接入Internet的计算机通信的标准.

1.2 osi七层协议

互联网协议按照功能不同分为osi七层或tcp/udp五层或tcp/ip四层

socket 在五层通讯的应用层和传输层之间(又叫socket抽象层)

socket又称为套接字,他是应用层与tcp/udp协议族通信的中间软件抽象层,他是一组接口.

套接字socket的发展史及分类

  基于文件类型的套接字家族  套接字家族的名字: AF_UNIX

  Unix一切结尾文件,基于文件的套接字调用的就是底层的文件系统来取数据,两个套接字进程运行在同一及其,可以通过访问同一个文件系统间接完成通信.

  基于网络类型的套接字家族  套接字家族的名字 :AF_INET

  (还有AF_INET6被用于ipv6,还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程,所以大部分时候我们只使用AF_INET)

TCP/UDP的区别(重点)

1.TCP与UDP的对比

  TCP  可靠的 面向连接的协议,传输效率低全双工通信(发送缓存&接收缓存),面向字节流.

  使用TCP的应用: Web浏览器 ; 文件传输程序.

  UDP  不可靠的 无连接的服务,传输效率高,一对一 一对多 多对一 多对多 面向报文(数据包),尽最大努力服务,无拥塞控制.

  使用UDP的应用: 域名系统(DNS),视频流,IP语音包.

由下图直接比较其中的差异

TCP和UDP下socket差异对比图:

上图只是让大家感受一下TCP和UDP协议,socket工作流程的不同,两者之间的差异是 TCP需要连接,

而UDP不需要连接.

二.tcp协议下的socket

上图就是通讯流程的大致描述

socket绑定IP和端口时可能初选下面的问题:

解决办法:

#加入一条socket配置,重用ip和端口
import socket
from socket import SOL_SOCKET,SO_REUSEADDR
sk = socket.socket()
sk.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #在bind前加,允许地址重用
sk.bind(('127.0.0.1',8898))  #把地址绑定到套接字
sk.listen()          #监听链接
conn,addr = sk.accept() #接受客户端链接
ret = conn.recv(1024)   #接收客户端信息
print(ret)              #打印客户端信息
conn.send(b'hi')        #向客户端发送信息
conn.close()       #关闭客户端套接字
sk.close()        #关闭服务器套接字(可选)

但是如果你加上了上面的代码之后出现了下面这个问题:  OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。如果出现了这个问题,只能换端口了,因为你的电脑不支持端口重用.

注 : 用socket进行通信,必须是一收一发对应.

2. TCP三次握手四次挥手(重点中的重点)

UDP协议下的socket

TCP 与 UDP 的区别 : 一个需要连接,一个不需要连接,但是TCP连接传输的速度相比较UDP慢,但是安全性比UDP高.

day27 网络通信协议 tcp/udp区别的更多相关文章

  1. 网络通信协议tcp,udp区别

    1 网络通信协议 Tcp udp的区别 重点(*****) Tcp三次握手四次挥手(******) udp客户端多人聊天 import socket udp_client = socket.socke ...

  2. Python 网络通信协议 tcp udp区别

    网络通信的整个流程 在这一节就给大家讲解,有些同学对网络是既熟悉又陌生,熟悉是因为我们都知道,我们安装一个路由器,拉一个网线,或者用无限路由器,连上网线或者连上wifi就能够上网购物.看片片.吃鸡了, ...

  3. 第二十七天- 网络通信协议 TCP UDP 缓冲区

    1.网络通信协议 osi七层模型:按照分工不同把互联网协议从逻辑上划分了层级 socket层 2.理解socket: Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计 ...

  4. 27 网络通信协议 tcp udp subprocess

    1.模块subprocess import subprocess cmd_str = input('请输入指令>>>') sub_obj = subprocess.Popen( cm ...

  5. iOS 网络编程 TCP/UDP HTTP

    一.HTTP协议的主要特点: 1. CS模式 2. 简单快速:只需要传送请求方法和路径.(常用方法有GET,HEAD,POST) 3. 灵活:任意对象都可以,类型由Content-Type加以标记 4 ...

  6. Java网络通信协议、UDP、TCP类加载整理

    网络通信协议 网络通信协议 网络通信协议有很多种,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal传输控制协议/英特网互 ...

  7. Java第三阶段学习(八:网络通信协议、UDP与TCP协议)

    一.网络通信协议 1.概念: 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传 ...

  8. JAVA基础之网络通信协议--TCP与UDP

    个人理解: 了解区分UDP与TCP的不同,正常情况都是两者结合的使用模式!为了更好的传输,经常会开多线程进行传输的! 一.网络通信协议: 1.TCP/IP协议: 四层:应用层.传输层.网络层和链路层: ...

  9. day 27 网络通信协议 tup udp 下的socket

    1.osi七层模型 通信流程 socket(抽象层): 结合上图来看,socket在哪一层呢,我们继续看下图 socket在内的五层通讯流程: 2.TCP/UDP的区别: TCP是以数据流的形式传输, ...

随机推荐

  1. 算法训练 A+B Problem

     算法训练 A+B Problem   时间限制:1.0s   内存限制:512.0MB      问题描述 输入A,B. 输出A+B. 输入格式 输入包含两个整数A,B,用一个空格分隔. 输出格式 ...

  2. 关于GridView只显示一样的问题

    如果GridView不管怎么改都只能显示一行的话,就重写GridView,自定义GridView: public class MyGridView extends GridView { public ...

  3. iframe获取父、子窗口的方法

    jquery.js调用iframe父窗口与子窗口元素的方法 1. jquery在iframe子页面获取父页面元素代码如下: $("#objid",parent.document) ...

  4. SuperToolTips

    https://github.com/nhaarman/supertooltips supertooltips-master.zip

  5. (转)实战Memcached缓存系统(7)Memcached的一些基础FAQ

    1. Memcached是什么? Memcached是分布式的内存对象缓存系统. 2. Memcached的基本数据结构是什么? Memcached是基于Key/Value对的HashMap.每一对, ...

  6. [ES6] Objects vs Maps

    Map is really useful when you want to use object as a key to set vaule, in ES5, you cannot really us ...

  7. 呈现怎样的香蕉饼路线Android系统

    无话可说,该系统的第一版,Android有的还可以,路由设置确实有闪光现象背.与其他的稳定版本发布,被能够机顶盒和路由组合.其次是SSD,还是很不错的. 硬件 watermark/2/text/aHR ...

  8. What is Observer and Observable and when we used these?

    转会:http://stackoverflow.com/questions/13744450/interview-when-do-we-use-observer-and-observable

  9. 设置int、float型数据的输出格式

    设置整型输出的有效位数,比如在输出时间时时.分.秒都是两位有效数字,如果是5分钟应该输出00:05:00.需要加上头文件<iomanip> cout<<setw(2)<& ...

  10. laravel5单元测试

    https://www.cnblogs.com/love-snow/articles/7641198.html