본문 바로가기
Programming/TCP IP

포트상태 대략정리

by Pendine 2021. 12. 21.
728x90

네트워크 통신시 필요한 정보는 아이피와 포트번호다.

 

이글에서 다룰건 포트 상태에 따른 접속 가능 여부인데

윈도우, 리눅스에서 커맨드 창으로 확인가능한데

listening, establish, time_wait, sync 상태로 분류할 수 있고

하나의 포트가 두개 이상의 상태를 가질 수 없다.

 

listening 은 포트가 열린 상태로, 클라이언트가 접속 가능한 상태의 포트다.

 

establish 는 연결이 된 포트로, 서버와 클라이언트가 연결된 상태를 의미한다.

이때 서버에서는 포트에서 또 다른 클라이언트를 접속 받을 수 있다.

 

time_wait의 상태는 연결이 종료되고 포트가 닫히기를 기다리는 상태이며 이상태는 설정마다 다르지만 대부분 60초라고 생각하면된다.

 

sync 의 상태는 클라이언트가 서버에 연결요청을 하는 상태로 아직 연결이 수립되지 않은 상태다.

 

 

연결 요청, 연결 종료시 서버와 클라이언트간 통신은

연결 수립시

클라이언트 -> 서버  연결요청

클라이언트 <- 서버  연결 수락

 

연결 종료시

클라이언트 -> 서버  연결 종료 요청

클라이언트 <- 서버  연결 종료 수락

 

의 형태로 상세하게 구분하면 위의 4개의 상태보다 상세히 표현될 수 있다.

다만 연결이 네트워크의 문제로 인해 종료되었을때, 단순하게 이러한 데이터 응답 형태로 상태를 확인하기에는 신뢰성이 떨어지므로, 서버가 클라이언트에게 또는 클라이언트가 서버에게 주기적으로 정보를 요청하거나 서로 연결상태를 확인하기 위한 메시지를 주고받는것으로 연결 유지가 되고있다는것을 파악해야한다.

 

연결 시도시 클라이언트는 서버에서 연결 요청에 대한 수락을 받지 못했을때 연결 요청을 종료하고 새로운 연결에 대해 연결 요청을 시도해야한다.

다만 이때 서버에 일정횟수 이상 접속 못하는 경우, 연결 시도를 종료할 수 있다.

 

연결 종료시에는 네트워크에 문제가 없어도 클라이언트가 서버에 연결 종료 요청을 보냈거나, 또는 서버가 클라이언트에 연결 종료 수락 메시지를 보냈어도, 받지 못하거나 처리하지 못하는 상황이 발생할 수 있기 때문에,

연결은 일정시간 이상 메시지를 송,수신하지 못했을 때 종료하는것이 바람직하다.

 

클라이언트는 서버에서 연결 종료 요청에 대한 응답이 없어도, 일정시간 응답이 없다면 연결을 끊어야한다.

서버는 클라이언트에 대해 연결 종료 수락에 대한 응답이 없어도, 일정시간 응답이 없다면 연결을 끊어야한다.

 

 

728x90

댓글