천리장성(千里長城)을 축조한 것은 동북 변경의 여진족, 서북 변경의 거란족을 방비하기 위한 것이었다. 건국 이래 고려는 변경의 방비를 위해 관방(關防: 변방의 방비를 위하여 설치한 요새) 시설을 쌓았는데, 1014년(현종 5)에서 1030년(현종 21)에는 동북, 서북 양면의 요새 여러 곳에 성곽을 쌓았다.
특히 성종~현종 대 세 차례에 걸친 거란의 침입은 북계 지역의 방어 시설의 필요성을 절감하게 하였다. 그리하여 서북 방면으로는 용주 · 철주, 안의진, 청새진, 그리고 지금의 의주인 위원진 · 인주 · 영덕진 등의 성을 쌓거나 보수하였고, 동북 방면에는 의주, 영평진, 요덕진, 상음현, 현덕진, 용진진 등의 성을 새로 쌓거나 보수하였다.
그러므로 천리장성의 축조는 이렇게 쌓은 북쪽 변두리 땅의 성(城)과 진(鎭)을 토대로 하여 1033년(덕종 2)부터 이들 관방을 선으로 연결하는 작업을 추진한 것이었다고 할 수 있다.
『고려사(高麗史)』에 “서북로의 송령(松嶺) 동쪽으로 장성을 쌓아 변방 적들의 침입을 막고자 하였다.”라고 한 것이 그러한 점을 말해 준다. 요새지 거점에 대한 관방 시설만으로는 방어상의 한계가 있다는 것을 인식하고, 이들 거점성을 중심으로 방어 체계를 하나의 연결선으로 전면 보완한 것이었다고 할 수 있다.
천리장성의 축조는 1033년(덕종 2) 8월 왕이 평장사(平章事) 유소(柳韶, ?~1038)에게 명해 북쪽 변경에 관방을 쌓게 한 것이 중요한 출발점이 되었다. 이것이 1차 장성의 축성인데, 이는 거란과의 외교적 긴장 속에서 국경 방어를 강화하기 위한 조치였다. 작업은 이후 1035년(정종 1)과 1041년(정종 7) 2차와 3차 장성의 축성으로 이어져 북계 지역의 국경 지역을 아우르는 장성이 이루어졌다.
천리장성의 위치는 서해안에 있는 옛 국내성(國內城) 경계의 압록강이 바다로 들어가는 곳으로부터 시작하여 동쪽으로는 지금의 의주(義州) 지역인 위원 · 흥화 · 정주 · 영해 · 영덕 · 영삭 · 정융 · 영원 및 그 부근의 평로 · 맹주 · 삭주 · 운주 · 안수 · 청새 등의 13성(14성)을 거쳐 지금의 함경남도 영흥(永興) 지역인 요덕 · 정변 · 화주 등의 3성에 연결되어 동해안에 이른다.
북한 학계에서는 천리장성이 압록강 하구에서 평안북도 북쪽, 자강도 희천, 평안남도 북단을 지나 함경남도 금야군과 정평군의 동해에 이르는 약 630㎞이며, 4단계에 걸쳐 구축된 것으로 정리되고 있다.
고려는 10세기 이후 거란, 여진, 몽골의 발흥에 의한 정세 변화 속에서 북쪽 변경으로부터의 지속적 외침의 위협에 시달렸기 때문에 그만큼 북쪽 변경의 군사적 중요성은 어느 시대보다 막중하였다. 한계는 있었지만, 군사적 방어가 가능했던 이유는 현종 대 이후 관방 시설의 적극적 구축과 천리장성 조성에 힘입은 바가 크다.
고려 사회가 정치적 · 외교적 · 제도적으로 안정을 기하면서 천리장성은 국경선의 기능, 혹은 문화권의 구분선과 같은 의미를 지니고 있었다. 특히 동북 방면은 장성 밖으로 길주(吉州)까지 기미주(羈縻州)가 설치되어 있어 장성은 여진족과 혈통이 섞이는 것을 막고, 문화적 차이를 구분하려는 구분선과 같은 기능을 가졌다. 그러나 동북 여진 정벌 후 성이 여진에게 반환된 뒤로 천리장성은 국경선으로서의 의미도 갖게 되었다.