비전공자에 학원출신이라는 배경이 취업을 준비하는 과정에서 발목을 많이 잡았습니다.면접 때 '전공자 보다 네가 뭐가 낫냐'라는 이야기까지 들었습니다. 취업을 하고 나서 시간이 좀 흐르자 회사가 그토록 왜 전공자를 찾는지 알게 되었습니다. 제가 모르는 지식을 당연하듯 알고 있었고, 심지어 그런 지식을 '기본기'라고 칭하더군요 처음엔 전공자와의 격차를 줄여야겠다는 생각뿐이었습니다. 처음으로 공부한 게 컴퓨터 구조와 운영체제였는데, 어려우면서도 신기했고 즐거웠습니다. 이때 혼공 9기로 참여했었는데 다른 사람들과 함께 공부하는 느낌이 드는 시스템이 너무 마음에 들었습니다. 시간이 조금 흐르고 서버에게 패킷을 주고받는 업무를 하다가 문득 '내부적으로 어떻게 동작할까?'라는 궁금증이 생겼습니다. 궁금증을 해소하기엔 ..
도서 정리/혼자 공부하는 네트워크
전파와 주파수무선 연결 네트워크에도 연결 매체, 표준, 네트워크 장비 등이 존재한다.전파는 3kHz부터 3THz 사이의 진동수를 갖는 전자기파이다.무선기기는 전파를 이용해 통신한다. 하지만 전파는 번개, 태양 등 자연에서도 발생한다. 이런 전파를 식별하기 위해 통신에 사용되는 전파의 ‘주파수 대역’이 미리 정해져 있다.와이파이와 802.11오늘날 LAN 환경에서의 무선 통신은 IEEE 802.11로 표준화되어 있고, 802.11b, 802.11g 처럼 숫자 뒤의 알파벳으로 규격을 표현한다.IEEE 802.11 표준은 대부분 2.4GHz, 5GHz 대역을 사용한다. 또한 버전에 따라 주파수뿐 아니라 전송 속도, 대역폭, 전송 가능한 거리, 변조 방식 등 많은 것들이 달라진다.와이파이는 IEEE 802.11..
암호와 인증서통신을 하는 과정에서 메시지를 주고받을 때 제 3자가 메시지를 훔쳐보거나 가로채 변조할 수 있기 때문에 암호화가 필요하다.암호화와 복호화의 핵심은 키이다. 컴퓨터상에선 키를 통해 암호화를 할 수 있다.대칭 키 암호화 방식과 공개 키 암호화 방식키는 무작위해 보이는 문자열처럼 생겼으며, 키와 원문 데이터에 수학적 연산 과정을 거치면 암호문이 생성된다. 이 수학적 연산 과정을 ‘암호화 알고리즘’이라고 부른다. 암호문을 수신자 측에서 복호화하면 원문 메시지를 얻을 수 있다. 복호화하지 않은 암호문은 제3자가 몰래 본다 해도 그 의미를 알 수 없다.데이터를 암호화하고 복호화하는 방법에는 두 가지 방식이 있다.대칭 키 암호화암호화와 복호화에 동일한 키를 사용한다.상대방에게 안전하게 키를 전달하는 게 ..
안정성을 위한 기술안정성이란 ‘특정 기능을 언제든 균일한 성능으로 수행할 수 있는 특성’을 의미한다. 이를 수치화하는 방법으로는 가용성이 있다.가용성안정성의 정도를 나타내는 용어로는 가용성(availability), 고가용성(High Availability)이 있다.가용성 : 컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율고가용성 : 가용성이 높음을 이야기한다. 모든 웹서비스 업체들의 중요한 목표이다.가용성은 정상적인 사용 시간을 의미하는 ‘업타임’과 정상적인 사용이 불가능한 시간인 ‘다운타임’을 통해 계산할 수 있다.가용성을 백분율로 표기했을 때 99.999% 이상이 ‘안정적’이라고 평가받는 시스템이다. 이 수치를 달성하면 다운타임이 1년에 5.26분, 1개월에 26.3초이다.가용성을 ..
와이어샤크와이어샤크는 패킷 캡처 프로그램이다. 이 프로그램을 통해 실제 패킷의 모습을 관찰할 수 있다.와이어 샤크는 다음 링크를 통해 다운로드할 수 있다.https://www.wireshark.org/download.html와이어 샤크를 실행한 모습패킷 캡처와이어 샤크를 실행하면 패킷을 관찰할 네트워크 인터페이스를 고를 수 있다.패킷이 송수신되고 있다면, 우측에 차트가 그려진다.원하는 네트워크 인터페이스를 클릭하면, 다음과 같이 표기된다.웹 브라우저를 열고, 중단 버튼을 눌러 원하는 시점에 패킷을 캡처할 수 있다.좌측 하단에 있는 공간에서 원하는 계층을 클릭하면 해당 계층의 데이터 관련 정보를 읽을 수 있다.이때 와이어샤크에서 네트워크를 분석하기 쉽도록 추가로 제공해 주는 정보도 존재한다.패킷 필터링와이..
HTTP 헤더HTTP 헤더는 아주 다양하기 때문에 자주 활용되는 중요한 HTTP 헤더들을 위주로 알아보자.요청 시 활용되는 HTTP 헤더HTTP 요청 메시지에 활용되는 대표적인 헤더를 알아보자.Host요청을 보낼 호스트를 나타내는 헤더. 주로 도메인 네임으로 명시되며, 포트 번호가 포함될 수 있다.User-Agent웹 브라우저와 같이 HTTP 요청을 시작하는 클라이언트 측의 프로그램을 의미한다.서버 입장에서는 이 정보를 통해 클라이언트의 접속 환경을 유추할 수 있다.Referer클라이언트가 요청을 보낼 때 머무르고 있던 URL을 명시하는 정보이다.이 정보로 클라이언트의 유입 경로를 알 수 있다.Authorization클라이언트의 인증 정보가 담겨있다. 인증 타입과 인증을 위한 정보가 차례로 명시된다.가장..
HTTP의 특성HTTP(Hypertext Transfer Protocol)는 응용 계층에서 정보를 주고받는 데 사용되는 프로토콜이다. HTTP는 네 가지의 주요 특성을 가지고 있다.요청-응답 기반 프로토콜HTTP는 클라이언트가 서버에게 요청 메시지를 보내고, 서버는 클라이언트에게 응답 메시지를 보내준다. 이렇게 요청과 응답의 형태로 메시지를 주고받는다.미디어 독립적 프로토콜클라이언트는 HTTP 요청 메시지로 서버의 자원을 요청할 수 있고, 서버는 HTTP 응답 메시지를 통해 자원에 대해 응답할 수 있다. 이때 HTTP가 요청하는 대상을 자원이라고 한다. HTTP는 자원의 특성을 제한하지 않으며, 단지 자원과 상호작용하는 데 사용할 수 있는 인터페이스를 정의한다.즉, HTTP는 자원의 특성과 무관하게 그저..
도메인 네임과 네임 서버네트워크상의 어떤 호스트를 특정하기 위해 IP 주소를 사용한다. 하지만 모든 IP 주소를 외울 수도 없을뿐더러, IP 주소는 언제든지 바뀔 수 있기 때문에 모든 IP 주소만으로 통신하는 것도 어렵다.때문에 일반적으로 사용자는 특정 호스트를 특정하기 위해 IP 주소 보다는, 도메인 네임을 많이 사용한다.도메인 네임은 ‘www.example.com’, ‘developers.naver.com’ 과 같은 문자열을 의미한다.네임 서버에서 도메인 네임과 IP 주소를 하나의 쌍으로 관리한다. 네임 서버를 DNS 서버라고도 부른다.네임서버에 질의하여 도메인 네임을 통해 IP 주소를 알아낼 수 있다.💡 호스트마다 hosts 파일이라는 것을 가지고 있다. 이 파일엔 도메인 네임과 IP 주소의 대응..
오류 제어 : 재전송 기법신뢰성을 보장하기 위해 잘못된 세그먼트를 재전송해야 한다. TCP의 재전송 기반 오류 제어가 어떻게 이루어지는지 알아보자.오류 검출과 재전송TCP 세그먼트에 오류 검출을 위한 체크섬 필드가 있지만, 이는 패킷의 훼손 여부만 나타낼 뿐이고 체크섬 값이 잘못되면 즉시 폐기하기 때문에 신뢰성을 보장하기 어렵다. 신뢰성을 보장하기 위해선 송신 호스트가 송신한 세그먼트에 문제가 발생했음을 인지할 수 있어야 하고, 잘못 전송되었음을 알게 되면 해당 세그먼트를 재전송할 수 있어야 한다.송신한 세그먼트에 문제가 있음을 감지하는 방법은 두 가지가 있다.중복된 ACK 세그먼트를 수신했을 때 : 수신 호스트는 세그먼트의 순서 번호 중에 일부가 누락되면, 중복된 ACK 세그먼트를 전송한다. 송신 호스..
TCP 통신 단계와 세그먼트 구조TCP 통신 단계를 세 단계로 나누면 다음과 같다.연결 수립데이터 통신(재전송을 통한 오류 제어, 흐름 제어, 혼잡 제어)연결 종료TCP는 통신하기 전에 연결을 수립하고 통신이 끝나면 연결을 종료한다. 그리고 데이터 송수신 과정에서 재전송을 위한 오류 제어, 흐름 제어, 혼잡 제어 등의 기능을 제공한다.TCP의 연결 수립, 종료를 이해하기 위해선 MSS라는 단위와 TCP의 세그먼트 구조를 이해해야 한다.MSS(Maximum Segment Size)는 TCP로 전송할 수 있는 최대 페이로드 크기TCP의 세그먼트 구조는 다음과 같다송신지 포트, 수신지 포트 : 송수신지 애플리케이션을 식별하는 포트 번호가 명시된 필드순서 번호 : 송수신되는 세그먼트의 올바른 순서를 보장하기 위..