公元前100年,汉武帝为回报匈奴单于“尽归汉使之不降者路充国等”的善意,派中郎将苏武、副中郎将张胜等出使匈奴,赠送单于大批财物。但在完成出使任务准备返国时,匈奴上层发生内乱,苏武的副使张胜牵涉其中,单于借此机会想逼迫苏武投降,为匈奴所用。
单于派卫律来游说苏武,许以丰厚的俸禄和高官,被严辞拒绝。单于命人把苏武关进一个露天的大地穴,断绝食品和水的供应,苏武渴了吃雪,饿了嚼吞毡毛,多日未死。匈奴以为有神保佑,就把他流放到北海没有人烟的地方,让他放牧公羊,并说等公羊生了小羊才能回汉朝。苏武在北海边处境艰难,挖掘野鼠所储藏的草籽充饥,每天拄着汉朝的旄节牧羊,连旄节上的牦牛尾的毛都脱落了。期间单于的弟弟于靬王到北海打猎,发现苏武还活着,便送来了一些食物和牲畜,但于靬王死后,这些财物被偷走,苏武又陷入艰苦的生活。后来单于又派李陵再来劝苏武投降,苏武依然坚守气节,坚决不降。
在苏武被流放北海五、六年之后,单于的弟弟于靬王到北海打猎,对苏武颇为器重,给予他衣服、食品等。于靬王死后,其部落离开。有学者认为,在于靬王的部落在此期间,苏武可能被赏赐了一个匈奴女人,与她生下了后代,名为苏通国。汉昭帝继位后,得知苏武还活着,便派使者到匈奴去,要求单于放回苏武,匈奴谎称苏武已死。后来苏武的随从常惠买通匈奴人,私下和汉使者见面,告知苏武的情况。
汉朝使者用常惠教的计谋说,汉天子在上林苑射猎时,射中一只大雁,雁足上系着苏武的书信,说他在北海。匈奴单于无法再隐瞒,只好放回苏武。苏武在匈奴历经十九年的磨难后,终于回到汉朝,胡须、头发全白了。汉宣帝时,有感于苏武的功劳,将他列入麒麟阁之列,并出钱将苏通国赎了回来,让他在汉朝世代为官。