SYN과 ACK는 무엇인가?
SYN와 ACK를 알기전에 TCP를 알아두는 것이 좋을 것 같다. TCP는 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜이며, 서버와 클라이언트 사이간에 동기화하기 위하여 three-way handshake를 사용하는데 이곳에서 SYN와 ACK가 등장한다.
Three-Way Handshake란 무엇인가?
TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.
[과정]
1. Client에서 Server에 연결 요청을 하기 위해 SYN 데이터를 보낸다.
2. Server에서 해당 포트는 Listen 상태에서 SYN 데이터를 받고 SYN_RCV로 상태가 변경된다. 그리고 요청을 정상적으로 받앗다는 답(ACK)와 Client도 포트를 열어달라는 SYN를 보낸다.
3. Client에서 SYN과 ACK를 받고 상태를 ESTABLISHED로 변경하고 서버에 요청을 잘 받았다는 ACK를 전송한다.
LISTEN : 포트가 열린 상태로 요청 대기중
Closed : 닫힌 상태
ESTABLISHED : 포트 연결 상태
SYN이란 무엇인가?
SYN는 '동시에 발생한다'의 약자이며 다른 컴퓨터로 전송 된 TCP 패킷으로 연결이 이루어지도록 요청한다. SYN이 두번째 시스템에서 수신되면 SYN/ACK가 SYN이 요청한 주소로 다시 전송이 되며 원래 컴퓨터가 SYN/ACK를 수신하면 최종 ACK가 전송된다.
ACK와 NAK란 무엇인가?
ACK는 '승인'의 약자이며 다른 컴퓨터나 네트워크 장치가 다른 컴퓨터에 SYN/ACK 또는 다른 요청을 보낸 것을 확인하는 응답을 나타낸다. 이와 반대로 NAK는 승인의 부정의 의미로 정상적으로 수신되지 않았음을 송신측에 알리는 용도로 사용한다.
위에 내용은 서버 프로그래밍에 관련된 내용이다. 비록 서버 프로그래머는 아니지만 협업을 자주해야하기 때문에 기본적으로 알아두면 좋을 것 같아 정리해보았다.
'Game Programming > 자문자답' 카테고리의 다른 글
맵과 해쉬의 차이는 무엇인가? (0) | 2022.10.12 |
---|---|
STL 벡터와 리스트의 차이는 무엇인가? (0) | 2022.10.09 |
참조 카운트란 무엇인가? (0) | 2022.09.15 |
크리티컬 섹션이란 무엇인가? (0) | 2022.09.14 |
렌더링 파이프라인이란 무엇인가? (0) | 2022.09.13 |