(CNN) -- It was supposed to be a class trip to a resort island that's considered the Hawaii of Korea. Instead, a ferry has capsized in the Yellow Sea, and hundreds of people are unaccounted for.
The parents of students from a South Korean high school have been clutching their cell phones, waiting for a call from their children or rescuers.
On Tuesday night, more than 300 high school students from the city of Ansan departed on a ferry called Sewol for a four-day trip to Jeju Island. About 70% of those aboard were from the high school.
The Sewol pulled out of the port at Incheon at 9:30 p.m. Tuesday, according to JTBC, a CNN affiliate.
Shortly before 9 a.m. Wednesday, passenger Kim Sung-Mook was eating breakfast in the ship's main hall when he felt a tilt, he told CNN affiliate YTN.
At first, "we thought it was because of the tide," he said.
The waves had been smooth until the ship suddenly leaned, witnesses said.
The ship tilted further, and an announcement blared through loudspeakers warning passengers that moving would be dangerous.
Then, he heard a loud bang from inside the ship. Kim said he thought a crane on board had toppled over.
When seawater started gushing into the ferry, passengers began to scramble.
Elsewhere on the ferry, high school student Lim Hyung Min felt tremors that were strong enough to knock shipping containers off balance. Several of his classmates were flung off their feet as the ferry began to lean.
"The students were falling over and crashing into things and bleeding," Lim said.
The ship tilted further, to about 90 degrees, passengers said.
Back in the main hall, Kim heard the buzzing of helicopters overhead. Cafeteria workers were dashing up to the deck.
"The helicopters arrived. They said they could take five more people, so we sent students," Kim said.
Footage from South Korean media showed helicopters hovering over a half-submerged ferry with panic-stricken passengers scrambling from the side.
Announcements on board: Don't move
Not everyone had made it to the top deck, because "the announcement asked not to move since it could be dangerous. So everyone stayed where they were. But when the water started coming in, people started moving to the upper level," he said.
Kim managed to get on a helicopter, but he said he'd seen as many as 30 people still trapped inside the ship. Shortly after his rescue, the ship capsized.
"Unless they broke a window, I think it would have been impossible for them to come out," Kim told YTN.
It remains unclear how many people have survived and how many are missing as the official numbers from authorities have been fluctuating throughout the day.
Inside the ferry, Lim told YTN he stayed in a room until rescuers opened a door and threw life jackets in his direction. He was ordered to jump into the ocean, which he described as "unbearably cold."
After his rescue, Lim went on air on YTN to list the names of his classmates whom he had seen to reassure their parents that they were safe.
Agonizing wait for parents
Meanwhile, parents had gathered at Ansan Danwon High School, clutching their cell phones in an agonizing wait for a call from their children. Officials posted a list of names, and each name was circled after confirmation of a rescue.
A woman was immediately swarmed by cameras as she received a call from her child. "Are you OK?" she cried out.
Although their own phones were lost in the water during the rescue, students have been borrowing rescuers' phones to call their parents. At one point, the school announced that all students had been rescued but soon rescinded the announcement, to the parents' wrath.
The students who fell into the water were "having difficulties due to their body temperatures dropping, but they have blankets and changed their clothes, so they're feeling better now," Lim told YTN.
The rescued students gathered in a gymnasium awaiting their parents and teachers. They have since departed the school in buses, according to YTN.
CNN's Judy Kwon contributed to this report.