TCP/IP协议

tcp/ip协议是个族群。包含如下

  • TCP
  • UDP
  • IP
  • ARP:根据IP找MAC地址
  • ICMP:PING 的时候用的协议
  • RARP:根据MAC找IP地址
  • IHMP

ISO七层网络模型

  • 应用层:传输的数据
  • 表示层
  • 会话层
  • 传输层:端口
  • 网络层:ip地址
  • 数据链路层:MAC地址
  • 物理层:网卡

TCP和UDP区别

  1. 稳定:在TCP中,如果有一方收到了对方的数据,一定会发送ACK确认请包给发送方,如果没收到ACK就会继续发数据给请求方。而UDP中,没有这个过程。因此导致了TCP稳定,UDP不稳定。
  2. 相对于UDO而言,要慢一些。
  3. WEB服务器都是使用的TCP。
  4. TCP发送数据和接收数据使用send()和recv()。
  5. UDP发送数据和接收数据使用sendto() 和recbfrom()

TCP服务器操作步骤

  1. 创建套接字socket(xxx):相当于买一个手机
  2. 绑定ip地址和端口bind(xxx):插入手机卡
  3. 将默认的主动套接字变成被动套接字(可接收数据)listen(xxx):设置手机为响铃模式
  4. 准备接收accept(xx):等着别人的电话,准备好接听。
  5. recv/send接收发送数据
    示例
from socket import *

#创建套接字
s = socket(AF_INET, SOCK_STREAM, 1)

#绑定服务器IP地址端口号,为空代表当前有几个网卡的所有IP地址
s.bind("",8080) 

#转换可接收模式的套接字,#5表示可以同时最大可接收5个请求(liunx系统不受限)
s.listen(5) 

#准备接收
client_socket, clientinfo = s.accept()
#client_socket 表示客户端的套接字。
#clieninfo 表示连接服务器的客户端IP和地址。

#接收数据
recvData = s.recv(1024)  #可以接收1024个字节
print("%s:%s"%(str(clieninfo), recvData))

#使用完后,记得要关闭套接字
client_socket.close()
s.close()

TCP客户端操作步骤

  1. 创建套接字socket()
  2. 发送请求connect()
  3. recv/send接收发送数据
    示例
from socket import *

#创建套接字
c = socket(AF_INET, SOCK_STREAM)

#发送请求
serAddr = ("192.168.1.254",8080) #服务器的IP地址
c.connect(serAddr)

#发送数据
c.send("haha".encode("utf-8"))

#接收数据
recvData = c.recv(1024)
print(recvData)

#关闭套接字
c.close()

三次握手

  1. 首先客户端发送给服务器一个SYN请求,(SYN请求里面包含一个序列号比如0)用来标识服务器是否收到请求,请求的内容就是SYN=0,如果服务器收到请求会在SYN加1 即0+1=1。
  2. 服务器收到请求,发送一个SYN+ACK。其中SYN是服务器发送给客户端的请求,用来确定客户端是否能收到,ACK就是用来确认收到客户端发来的请求即0+1=1。返回的内容就是SYN=0,ACK=1。
  3. 客户端收到服务器返回的请求,需要给服务器说一下我已收到,即发送内容为ACK=1,是在服务器发送过来的SYN的基础上+1。此时三次握手结束。
  4. 开始发送HTTP协议的数据请求。
  5. 服务器收到请求发送数据给客户端。
  6. 客户端发送确认收到数据请求给服务器。


    三次握手

四次挥手

  1. 客户端调用close()关闭套接字,发送FIN+ACK给服务器数据包。FIN就是用来告诉服务器我关闭了套接字。ACK用来确认上次收到的数据 (半连接)。
  2. 服务器收到请求,发送ACK数据包给客户端。
  3. 服务器紧接着发送FIN+ACK数据包给客户端,FIN告诉客户端我也关闭了套接字。ACK用来确认上次的请求收到了 (已连接)。
  4. 客户端发送ACK数据给服务器确认收到了。即四次挥手结束。


    四次挥手

长连接、短连接

  • 长连接:只需要一次三次握手。就可以一直保持连接。如,视频。
  • 短连接:每次连接都需要三次握手,四次挥手。如,访问网页。

TCP10种状态

TCP10种状态
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,060评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,053评论 0 8
  • 1、TCP连接 TCP(Transmission Control Protocol) 传输控制协议。TCP是主机对...
    风痕伊雪阅读 262评论 0 0
  • 读懂了TCP/IP协议,也就基本了解的网络通信原理。本文是参照研究生教材《网络安全原理与应用》里面的内容加上自己实...
    Super超人阅读 21,925评论 1 19
  • TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TC...
    字节码阅读 1,009评论 0 3