2008년 8월 26일 화요일

Unix syn_sent

TCP는 Transmission Control Protocol(TCP)의 약자로 복잡한 네트워크 프로그램 혹은 일반적인 프로그램에서 많이 쓰는 프로토콜입니다.

UDP는 User Datagram Protocol(UDP)의 약자로, 네트워크에 데이터(패킷)만 날리면 해당 컴퓨터에 바로 데이터가 날라오는, 거의 '연결'을 고려하지 않고 '데이터의 전송'만을 고려한 프로토콜입니다. 단순 데이터 전송을 위해 많이 쓰이는 프로토콜입니다.

TCP 프로토콜에서는 SYN와 ACK라는 특수 패킷(data)이 정의되어 있습니다. 이 패킷은 한 PC가 다른 PC로 연결 요청을 할 때, 연결을 승낙하기 위해 거치는 일련의 절차 중에 보내지는 패킷인데요. TCP 프로토콜은 연결을 수락하기 위해 3-way handshaking이라 불리는 절차를 진행합니다. 쉽게 말해 A PC에서 B PC로 tcp 규약으료 연결된다면, A PC가 B PC로 SYN이라는 패킷을 보내면, B PC는 A PC로 ACK라는 패킷을 보내고, 다시 A PC가 B PC로 SYN을 보내야 그제서야 연결이 수락(ESTABLISHED)됩니다.

SYN_SENT는 본인의 컴퓨터에서 상대방 컴퓨터로 연결을 시도하기 위해 SYN 패킷을 보냈음을 의미하며, 아직 ACK 패킷이 오지 않은 상태(어쩌면 상대 컴퓨터가 오프라인(offline)상태, 혹은 자신 컴퓨터(로컬 컴퓨터)가 offline 상태)임을 의미합니다.