거란의 원래 공격 목표는 송이었다. 그러나 먼저 배후 세력을 없애기 위하여 발해 유민이 세운 정안국을 정벌하고, 이어서 성종 때 고려를 침략해 왔다. 거란이 1차로 침입했을 때, 고려 조정에서는 서경이북의 땅을 거란에 주고 화평을 맺자는 의견도 있었다.
그러나 거란의 침략 의도가 고려와 송과의 관계를 끊는 데 있다는 것을 알아차린 서희는 거란의 장수 소손녕과 담판을 벌였다. 서희는 고려가 송과의 관계를 끊는 대신, 거란으로 가는 길목인 압록강 동쪽 280리 지역을 돌려받기로 하고 화약을 맺었다.
고려는 이 지역의 여진족을 몰아 내고 6성을 쌓아 고려의 영토로 편입하였다. 이로써 고려는 강동 6주를 회복하였고, 영토를 압록강까지 확대하였다. 거란은 나중에 이 지역이 전략의 요충지임을 알고 반환을 요구했으나 고려는 거부하였다.
그 후, 거란은 목종을 폐하고 현종을 즉위시킨 강조의 정변을 트집잡아 다시 두 차례에 걸쳐 고려를 침략하였다. 거란의 2차 침입 때에는 개경이 함락되기도 하였으나, 양규가 이끄는 고려군이 강화를 맺고 물러가는 거란군을 크게 격파하였다.
3차 침입 때에는 강감찬이 지휘한 고려군이 귀주에서 거란군을 거의 전멸시켰다(1019). 이 승리를 귀주 대첩이라고 한다.
이후 두 나라는 전쟁을 중단하고 강화를 맺어 사신을 교환하였다. 그러나 고려는 북방 민족의 침입에 대비하기 위하여 국방 강화에 힘썼다. 현종 때에는 강감찬의 건의에 따라 개경 주위에 나성을 쌓았고, 그 후 압록강 하구에서 동해안의 도련포에 이르는 천리장성을 쌓아 국경의 경비를 강화하였다.
나성
내외성 중에서 도시 전체를 둘러싼 외성