Gökkuşakları ışık ışınlarının su damlaları içinden geçerken kırılmasıyla ve yansımasıyla oluşur. Bir ortamın içinde hareket eden ışık ışınları başka bir ortamla karşılaştıkları zaman ya yansıyarak aynı ortamın içinde kalırlar ya da kırılarak diğer ortama geçerler. Yansıma durumunda ışığın ara yüzeye geliş açısı ile dönüş açısı aynıdır. Ancak kırılma sırasında açı değişir. Kırılma açısı ortamların kırılma indisleri tarafından belirlenir. Ayrıca kırılma indisi ışınların dalga boyuna bağlı olarak değiştiği için farklı renkteki ışınlar farklı açılarla kırılır. Örneğin beyaz ışık farklı dalga boylarındaki ışınların bir bileşimidir. Farklı dalga boylarındaki ışınlar bir prizmanın içinden geçirildiği zaman farklı açılarla kırılır (bir kez prizmaya girerken bir kez prizmadan çıkarken). Böylece beyaz ışık kendini oluşturan farklı renklerdeki ışıklara ayrışır. Kırılma açısı kırmızı renk için en büyük, mor renk için en küçüktür. Gökkuşağının oluşumu da ışığın prizmadan geçerken renklere ayrışmasına çok benzeyen bir süreçtir.
Işık ışınları, su damlalarının içine girerken ve çıkarken birer kez kırılmaya uğrar. Ayrıca damlaların içindeyken birkaç kez yansıyabilirler. Işınlar damlaların içinden çıkmadan önce bir kez yansıdıkları zaman renklerin dıştan içe doğru kırmızı, turuncu, sarı, yeşil, mavi, lacivert, mor olarak sıralandığı gökkuşakları oluşur. Işınlar iki kez yansıdığı zamansa renklerin sıralanışı tersine döner. Işık ışınlarının iki ya da daha fazla kez yansımasıyla da gökkuşakları oluşabilir. Ancak böyle gökkuşakları genellikle çok solgundur.
Gökkuşakları aslında tam bir çember şeklinde oluşur ancak gökkuşağının görülebilmesi için Güneş’in ufkun üzerinde yaklaşık 40 dereceden fazla yükselmemiş olması gerekir. Bu yüzden yer yüzeyinden bakıldığında gökkuşakları yarım bir çember biçiminde görünür. Ancak yüksek bir dağın tepesinden ya da yükseklerde uçan bir uçağın içinden baktığınız zaman tam bir çember biçiminde gökkuşakları görebilirsiniz.