匈奴自從給衛青、霍去病打敗以後,雙方有好幾年沒打仗。他們口頭上表示要跟漢朝和好,實際上還是隨時想進犯中原。匈奴的單于一次次派使者來求和,可是漢朝的使者到匈奴去回訪,有的卻被他們扣留了。漢朝也扣留了一些匈奴使者。
公元前100年,漢武帝正想出兵打匈奴,匈奴派使者來求和了,還把漢朝的使者都放回來。漢武帝為了答覆匈奴的善意表示,派中郎將蘇武拿着旌節,帶着副手張勝和隨員常惠,出使匈奴
單于把蘇武關在地窖里,不給他吃的喝的,想用長期折磨的辦法,逼他屈服.這時候正是入冬天氣,外面下着鵝毛大雪。蘇武忍飢挨餓,渴了,就捧了一把雪止渴;餓了,扯了一些皮帶、羊皮片啃着充饑。過了幾天,居然沒有餓死。單于見折磨他沒用,把他送到北海邊去放羊,跟他的部下常惠分隔開來,不許他們通消息,還對蘇武說:“等公羊生了小羊,才放你回去。”公羊怎麼會生小羊呢,這不過是說要長期監禁他罷了。
一直到了公元前85年,匈奴的單于死了,匈奴發生內亂,分成了三個國家。新單于沒有力量再跟漢朝打仗,又打發使者來求和。那時候,漢武帝已死去,他的兒子漢昭帝即位。漢昭帝派使者到匈奴去,要單于放回蘇武,匈奴謊說蘇武已經死了。使者信以為真,就沒有再提。
第二次,漢使者又到匈奴去,蘇武的隨從常惠還在匈奴。他買通匈奴人,私下和漢使者見面,把蘇武在北海牧羊的情況告訴了使者。使者見了單于,嚴厲責備他說:“匈奴既然存心同漢朝和好,不應該欺騙漢朝。我們皇上在御花園射下一隻大雁,雁腳上拴着一條綢子,上面寫着蘇武還活着,你怎麼說他死了呢?”單于聽了,嚇了一大跳。他還以為真的是蘇武的忠義感動了飛鳥,連大雁也替他送消息呢。他向使者道歉說:“蘇武確實是活着,我們把他放回去就是了。”
蘇武出使的時候,才四十歲。在匈奴受了十九年的折磨,鬍鬚、頭髮全白了。回到長安的那天,長安的人民都出來迎接他。他們瞧見白鬍須、白頭髮的蘇武手裡拿着光杆子的旌節,沒有一個不受感動的,說他真是個有氣節的大丈夫。