TCP 통신 시 발생 가능한 예외 케이스 분석
·
Network
보통 네트워크는 예측할 수 없는 구간이라고 한다. 클라이언트와 서버가 물리적으로 떨어져있는 만큼 중간 노드(ex. NAT, Load Balancer, Switch)들을 경유하고 보안 장비(ex. SG, WAF)를 거치면서 패킷이 필터링 될 수도 있기 때문이다. 또한 서버와 어플리케이션 자체의 상태에 따라서도 에러 처리가 모두 다르다. 문제가 발생하면 고려해야 하는 경우의 수가 많은 구간이기 때문에 대표적인 케이스들에 대해 인지하고 있는게 문제 해결에 도움이 될 것이라 생각한다. 오늘은 기본적인 문제 상황 몇개를 살펴 보고자 한다.포트를 정상적으로 리스닝 하지 않는 케이스만약 서버는 활성화된 상태에서 내부의 어플리케이션만 죽어서 Port를 리스닝하지 않는 상태라면 어떤 에러가 발생할까? 브라우저에서 요청을..
클라이언트 소켓과 서버 소켓 운영 주의 사항 및 개선점 분석
·
Network
TCP에 대해 학습을 진행하던 중 클라이언트 입장에서의 소켓과 서버 입장에서의 소켓이 동작하는 방식이 달라진다는 걸 알게되었다. 서비스 운영에 있어서 중요한 고려 지점이 될 것이라 생각해 좀 더 깊게 파해쳐보기로 했다.클라이언트 소켓과 서버 소켓의 차이시스템의 규모가 확장되고 비즈니스가 복잡해질수록 다른 서버와의 통신도 잦아진다. 이때 다른 서버가 내 서버에 요청을 보내면 서버 소켓을 사용해서 요청을 받고, 내 서버가 다른 서버로 요청을 보낼때는 클라이언트 소켓을 사용한다. 그렇다면 서버 소켓과 클라이언트 소켓의 차이점은 무엇일까?  가장 큰 차이점은 로컬 포트를 사용하는 방식과 개수라고 생각한다. 서버 소켓의 경우 어플리케이션을 실행할때 설정한 로컬 포트 딱 하나만 사용한다. 스프링 어플리케이션을 실행..