中国古代城墙是用土做的,用夯土打实、夯实筑成的,用当地黄土或黑土,用夯打得紧固,一层一层地打,每层打到十五厘米的厚度。为了把城墙做得坚固耐久,就把城墙的墙面不做成直线的,而是上部墙面向内收起成为“侧脚”。城墙的厚度,下部为四米,上部为三点五米,高度大约七至十米不甚相同。到了明代,国势发达,经济繁荣,所以有能力烧砖,对各地城墙外皮进行包砖,成为砖城墙。用土修筑的城墙坚固耐久,防御性很强。夯土筑城的城门与角楼处,将城墙宽度放宽,与城墙同样做法,乃在下部做一个夯洞(筒券),上部继续夯土,墙的顶上用砖平铺,然后立柱,修建一层房屋,这就作为城楼了。城楼是一个标志,从远处便知城之位置。同时,它也是一种防御性设施,可以窥视敌人,也可以射箭或打枪,里面有洞眼。城墙墙体宽大,而且有七至八米的高度,所以用土的量是相当大的。砖城墙也就是在夯土城墙的两面包上一层大砖,即城砖。城砖比房屋用的砖块尺度宽长,城砖用白灰浆砌筑。凡是砖砌的城墙,其表皮用砖,基座都用石条砌筑,石条高度不甚相等,有的地方一米,有的地方两米,在石条的顶部再砌砖墙墙体,砌到一定高度时再做垛口、枪眼。古代城墙及城门洞口的式样,现在到北京或到其它地方看到的城门,基本上全部都是券门洞。券门洞即是半圆形的门洞。这个式样的券洞发明很早,一般用于房屋与墓葬,到元代开始才大量用于城门上。早期的城门洞口都做方形的或者做圭角形,其来源是由于建楼用木梁来支承,在砖墙上用圆木成排地平铺基础之上,在圆木上往上砌砖,上部再建城楼,这是砖土结合的方式。在这样构造的情况下,挑木即梁与砖打接之处易于腐烂,所以在梁的端部贴城墙洞口是一排木柱,木柱柱头再支承顺梁,梁面贴于排梁之底面,这就加固了其承压力。唐宋时期这种做法十分普遍,到了元朝,砌砖技术更进一步发展,所以城门洞口的木梁、排梁全部取消,改为用砖砌拱的办法,由墙体一直与拱砖门洞口上的顶砖全部连成一体,这样既坚固又耐久,非常稳定。所以券门建造较普遍并流传开来。城墙并非一条直线,有的相互错开,有的不直通。虽然用砖砌出,也同样砌出弧形。在城墙墙体之侧面还砌出马面。每隔二十几米之处,特别是防御性强的部位,才建设马面。马面是宋代名词,就是在墙体的外楼建一个方垛,大约五乘八米左右,从外表看与城墙相同,这是为防御敌人攻城,保卫城池的一项设施。在城墙的里边还建有马道,这是为人们登上城墙之用的。在军事战略上还有一种是战马城。城墙只修外面,与其它城一样,但在城里边不做墙面而是做斜的土坡。这样做,一方面为了节省城砖,另一方面,主要是为了战争时,人们可从城内四面八方登上城头,不用局部的马道。这种方法,战力、防御性更强。明代扩建后的西安城墙高12米,顶宽12-14米,底宽15-18米,周长约13.7公里。城墙每隔120米修敌台一座,突出在城墙之外,顶与城墙面平。这是专为射杀爬城的敌人设置的。敌台之间距离的一半,恰好在弓箭的有效射程之内,便于从侧面射杀攻城的敌人。城墙上共有敌台98座,上面都建有驻兵的敌楼。