TCP 4

TCP 통신 동작 과정 움짤로 한눈에 알아보기

TCP 통신 과정을 쉽게 이해하기 위한 수단 중 하나는 그림이나 영상을 통해서 실제 동작 과정을 머리속으로 이미지화 해보는 것이라고 생각한다. 반대로 TCP통신 과정을 그려내지 못한다면 제대로 이해하지 못하고 있는 것이다. 그림은 두 서버간 데이터를 송수신할 때 각 Layer에서의 처리과정과 데이터 표현방식을 한눈에 볼 수 있도록 정리한 내용이다. Layer1~7은 OSI 7계층을 의미하며, 편의상 L5~L7은 묶어서 표현했다. 네크워크 상에서 데이터는 Packet단위로 쪼개져서 송수신 되기때문에 Client와 Server는 I/O Buffer를 사용해서 송수신 되는 Packet들을 Buffer에 임시로 저장하고 읽으면서 순서에 맞게 분해하고 조립하는 과정이 필요하다. 또한 Packet이 각 Layer를..

TCP 통신 서버/클라이언트 요청/응답 인바운드/아운바운드 차이 및 정확한 개념

제목에 열거된 것들은 TCP통신 시 사용하는 기본 용어들인데 그 정확한 개념을 이해하고 사용하는 사람은 생각보다 많지 않다 (경험상 최소 50%는 정확히 알지 못한다) 일반적으로 이렇게 세트로 알고 있는 경우가 많다 클라이언트가 아웃바운드로 요청을 보내면 서버는 인바운드로 요청을 받고 응답을 보낸다 위 예시가 틀린건 아니지만 반드시 저렇게 세트로 동작하진 않는다 만약 아래와 같은 질문을 받는다면? Q. 연결방식은 서버인데 수신거래는 1111 포트로 요청받아서 해당 세션으로 응답을 보내고 송신 거래의 요청은 상대방 2222포트로 보내고 응답은 수신거래랑 같은 포트(1111)를 사용할 수 있나요? 질문이 복잡해 보이지만 상호간 회선을 정의하는데 기본적으로 설정해야 되는 내용들이다 감이 잘 안오거나 헷갈린다면..

[리눅스] TCP 소켓 통신 테스트 명령어 nc(ncat) 사용법

리눅스에서 소캣 통신 테스트를 위한 도구로 ncat(줄여서 nc)을 제공한다. (TCP, UDP) 혹시 설치가 필요하다면 yum install nc 등 을 통해서 설치 후 사용한다. nc는 소켓 통신에서 클라이언트 역할뿐만 아니라 -l 옵션을 통해서 서버 역할도 수행이 가능한데 오늘은 이 기능에 대해서 예제를 통해서 알아보려고 한다. 1. TCP 소켓 생성 후 접속 대기 nc -v -l -k IP PORT ex. $ nc -v -l -k 10.0.2.15 1111 Ncat: Listening on 10.0.2.15:1111 서버(IP : 10.0.2.15)에서 소켓(PORT : 1111) 생성 후 클라이언트의 접속을 기다린다. (LISTEN) 2. TCP 소켓 생성 후 다른 TCP 소켓에 접속 nc -v..

[리눅스] 가장 간단한 3가지 통신 테스트 방법 (telnet, curl, /dev/tcp)

리눅스 서버에서 어떤 서비스가 동작하고 있고, 해당하는 서비스의 포트가 listen 상태일 때 다른 서버에서 통신을 확인하는 가장 보편적이고 간단한 통신 테스트 방법 3가지를 소개하고자 한다. 1. telnet telnet IP PORT 연결 실패 시 $ telnet 10.0.2.16 9936 Trying 10.0.2.16... telnet: connect to address 10.0.2.16: Connection refused 연결 성공 시 $ telnet 10.0.2.16 9936 Trying 10.0.2.16... Connected to 10.0.2.16. Escape character is '^]'. 간혹 telnet이 설치되어 있지 않거나 보안상 telnet 명령어의 사용이 불가능한 경우 cur..