본문 바로가기

알아두면 좋은 IT 지식/Network

(12)
HTTP HEADER HOST와 실제 호출 주소가 다르다면? (CORS와는 다른 문제) HTTP/1.1 부터 필수값으로 지정이 되어 HTTP 프로토콜 헤더 중 유일한 필수값인 HOST일반적으로 자동으로 채워지는 헤더이기 때문에 크게 신경을 안쓰는 값이지만 서버에서 서비스를 찾아가는 중요한 정보로 쓰이기 때문에 정확한 개념을 알아 둘 필요가 있다.하나의 IP주소가 여러개의 도메인을 사용하는 경우 HOST에 도메인명과 포트를 입력함으로써 같은 IP를 호출하면서 원하는 도메인(서비스)를 정확하게 찾아갈 수 있다. Client에서 요청한 서비스를 Server에서 찾는 과정은 크게 아래 두 단계로 나눌 수 있다.요청 주소를 통해 서버에 접속한다.서버는 요청받은 정보와 일치하는 서비스를 찾아서 실행한다.이 때 2번 단계에서  요청받은 정보 중 서비스를 찾기 위해서 사용하는 정보는 Port와 Path ..
Telnet Shell 텔넷 접속 후 데이터 전송 까지 순서대로 실행하는 쉘파일 만들기 telnet 명령어를 통한 반복적인 데이터 전송 테스트를 해야하는 경우 쉘파일로 구성하여 자동화 해보자 ( echo 'open 10.0.2.15 10000' sleep 3 echo '0012TESTDATA' sleep 3 echo 'exit' ) | telnet10.0.2.15서버 10000포트에 접속 후 00012TESTDATA 라는 12Bytes 길이의 데이터를 전송 후 접속을 종료한다 명령어 중간중간 3초 간격을 줬다 telnet.sh 과 같이 파일로 만들어 놓고 실행하면 순서대로 동작하는 것을 볼 수 있다
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)를 사용할 수 있나요? 질문이 복잡해 보이지만 상호간 회선을 정의하는데 기본적으로 설정해야 되는 내용들이다 감이 잘 안오거나 헷갈린다면..
[IT] AIX 포트정보로 프로세스 확인 netstat rmsock tcpcb 리눅스에서는 포트정보로 사용중인 프로세스를 알아내는 건 간단하다 netstat -anp | grep PORT -p 옵션을 주면 PID가 바로 나온다 (하지만 -p 권한이 없는 경우가 많음) 서버가 AIX라면? 절차는 조금 복잡하지만 권한적인 측면에서는 AIX가 조금 더 낫다 먼저 netstat에 -A옵션를 주고 포트로 검색한다 netstat -Aan | grep PORT 결과값 맨 앞행에 프로토콜 블럭주소가 나오고 블럭주소를 rmsock의 인자로 넘긴다 rmsock 블럭주소 tcpcb rmsock의 결과로 PID를 확인할 수 있고 PID를 인자로 ps명령어를 실행하면 ps -ef | grep PID 프로세스 정보를 확인할 수 있다. 예제로 보면 아래와 같다 $ netstat -Aan | grep 9830..
"그쪽 네트워크 문제 아니에요?" 네트워크 분쟁의 해결사 TCPDUMP 사용법 (생성~분석) 서로 다른 시스템간에 인터페이스를 하다보면 가장 쉽게 발생하는 문제 중 하나가 바로 네트워크 오류인데, 잘 알지 못하면 또 이것만큼 해결이 어려운 문제가 없다. 왜냐? 서로 남탓을 하기 아주 딱 좋은 문제이기 때문이다. 그리고 서로 잘못이 없다고 우길 때, 이 분쟁의 해결사로 가장 먼저 등장하는 카드가 바로 tcp dump이다. "아무리 봐도 우리쪽 시스템은 문제는 없는거 같은데 갑자기 연결이 끊겼어요. 그쪽 네트워크 문제 아니에요?" "tcpdump를 떠보니 18시18분18초에 그쪽에서 Fin을 보낸게 확인 되네요. 확인 좀 해주세요." 같은 상황이지만 전자의 경우 갈등이 시작되고, 후자의 경우 갈등이 해결된다. 그럼 후자가 되기위해 리눅스에서 사용할 수 있는 가장 간단한 tcpdump 사용법과 분석법..
[IT] Telnet의 전송키는 Enter키가 아니다? (Not Enter But Ctrl+D?) 네트워크 방화벽, 연결상태 확인을 위해서 가장 많이 쓰는 명령어 중 하나가 Telnet이다. 그리고 Telnet을 사용해서 연결 테스트뿐만 아니라 데이터의 송수신도 할 수 있는데, 이 때 많은 사람들이 보통 데이터를 입력한 후 Enter키를 입력해서 전송을 실행하고 크게 문제없이 사용했을 수도 있다. 하지만 조금 더 정확한 테스트르 위해서는 Enter키가 아닌 반드시 Ctrl+D 예약키를 사용하는 것이 맞다. 그럼 왜 그런지 tcpdump와 수신프로그램의 java stacktrace log를 통해서 실제 동작의 차이를 확인해 보겠다. 먼저 tcpdump 분석 결과부터 확인해 보자. TCP DUMP 전송 시 Enter 키 사용 송신 (telnet / 34Byte 데이터 두 번 전송) $ telnet 10...
[리눅스] 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..