네트워크를 공부하면서 인터넷강의 별도로 개인적으로 공부할 도서를 구비하였었다. 오늘은 이 도서의 내용을 정리해보는 글을 작성해보았다.
네트워크는 '망상 조직'이나 '망'이라는 의미가 있는데 실제 의미를 고려하면 '정보나 노동력 등 어떤 자산을 서로 주고받을 수 있는 상태'라고 할 수 있다.
네트워크 상에서 주고받기를 원활히 수행하기 위해 특정한 규칙이 필요합니다. 이를 TCP/IP라 합니다.
TCP/IP 프로토콜은 통신을 위한 프로토콜의 하나입니다. 프로토콜은 컴퓨터 간에 데이터를 주고받을 때 필요한 통신 장비간에 서로 정해놓은 규칙과 약속라고 할 수 있습니다.
TCP/IP는 전 세계 공통 통신 프로토콜이며, 데이터 송수인에 관한 일련의 작업을 하나로 모은 것입니다. TCP/IP에서는 데이터를 신호로 바꾸거나, 신호를 데이터로 되돌리는 데 4단계의 절차를 거칩니다. 각 단계를 계층이라고 부릅니다.
애플리케이션 계층은 TCP/IP의 최상단 계층이며 컴퓨터끼리의 주고받기를 사용자가 이용할 수 있는 통신 서비스라는 형태로 만드는 것이 주 역할입니다.
애플리케이션 계층에서 추가되는 헤더를 애플리케이션 헤더라고 하며 여기에는 서비스를 실현하기 위해 가장 중요한 '요청과 응답'에 관한 정보가 들어 있습니다.
만일 클라이언트가 서버에 서비스를 요청할 때 구체적인 데이터를 주고받지 않고 연락만 취할 때는 데이터 부분이 비어있는 상태로 보냅니다.
HTTP 프로토콜은 하나의 요청에 대해 하나의 응답을 반환하는 아주 간단한 프로토콜입니다. '요청'과 '응답'이라는 두 종료의 패킷을 사용하여 주고받기를 수행합니다.
HTTP 프로토콜은 '요청된 데이터를 반환하는 것'만을 목적으로 만들어져 한 번의 요청과 응답으로 통신은 완결됩니다. 이런 프로토콜은 상태 비보존형 프로토콜(statless protocol)이라고 합니다.
위의 상태 비보존형 프로토콜의 경우 완전히 처리할 수 없는 서비스를 해결하기 위한 방법으로 쿠키가 있습니다. 쿠키는 HTTP 프로토콜의 정규 장치가 아니며 CGI와 함께 사용됩니다.
SSL은 인터넷 상에서 데이터 통신을 암호화하는 프로토콜입니다. SSL을 바탕으로 표준화 한것이 TLS입니다. 브라우저로 표시한 웹페이지는 열쇠 마크 또는 https로 시작하게 됩니다.
메일을 수신인의 메일 서버까지 전송하는 프로토콜입니다. SMTP 프로토콜에서는 명령은 '4문자 알파벳' 응답은 '3자리 숫자'로 나타냅니다.
메일 서버로부터 자기앞으로 온 전자메일을 받을 때 사용하는 프로토콜입니다. 현재는 POP3가 주류를 이루고 있습니다. POP 프로토콜에서는 명령은 '4문자 알파벳' 응답은 '+OK' 또는 '-ERR'로 나타냅니다.
전자메일은 원래 다음과 같은 제약이 있습니다.
1. 제목에는 한글을 사용할 수 없다.(전자메일의 헤더로 사용할 수 있는 문자 코드는 US-ASCII뿐 입니다.)
2. 텍스트밖에 보낼 수 없다.
이런 제약에 구애받지 않고 제목에 한글을 사용하거나 첨부 파일이라는 형태로 데이터를 보낼 수 있도록 해주는 프로토콜이 MIME입니다.
MIME는 정해진 원칙에 따라 파일을 US-ASCII 문자열로 인코딩하고 인코딩 정보를 첨부해 수신인에게 보냄으로써 수신측이 올바른 방법으로 디코딩할 수 있도록 하는 장치입니다.
전송 계층은 '통신을 실현하는 것'이 목표입니다. '데이터를 상대에게 전달하는 것' 뿐만이 아닌 '데이터를 상대 애플리케이션 계층에 있는 어떤 프로토콜에게 전달할지'까지 책임을 지고 전달을 해야합니다.
전송 계층에서 취급하는 데이터의 단위를 세그먼트라고 합니다.
TCP는 '데이터를 안전하고 확실하게 전달할 것'을 모토로 한 프로토콜로, 데이터가 도중에 파손되거나 전달되지 못했을 때 재전송하는 기능이 있습니다. 때문에 데이터의 정확성이 요구되는 전자메일 서비스나 WWW 서비스에 사용되고 있습니다.
통신 상대에게 통신 상태를 전하는 수단으로 사용되는 것이 TCP 헤더에 있는 6비트의 컨트롤 플래그 입니다. 상대에게 전하고 싶은 항목은 '1'로 만듭니다.
통신 시작 예시) 3-way 핸드셰이크
000010 ->
010010 <-
010000 ->
통신 종료 예시)
010001 ->
010000 <-
010001 <-
010000 ->
UDP는 '데이터를 빨리 전달할 것'을 모토로 하고 있기 때문에 데이터를 보내기만 할 뿐 그 이후의 어떤 지원도 하지 않습니다. 때문에 데이터의 실시간성이 요구되는 IP 전화나 스트리밍 송출에 사용되고 있습니다.
애플리케이션 계층에는 프로토콜마다 데이터의 입구가 있습니다. 이를 포트라고 하며 각 포트에는 포트 번호가 붙어 있습니다. 통신을 수행할 때는 포트 번호를 사용하여 보낼 곳을 지정합니다.
포트 번호는 0~65535까지 있으며 0~1023번까지는 통신 서비스마다 미리 예약되어 있으며, 웰노운 포트 번호라고 합니다.
인터넷 계층은 여러 개의 네트워크를 지나서 수신측의 컴퓨터에 데이터를 전달하는 역할을 맡고 있습니다. 이러한 계층에서 취급하는 데이터의 단위를 IP 데이터그램이라고 합니다.
IP 프로토콜은 '누가 누구에게 전달할지'라는 통신에 있어서 가장 중요한 정보를 다루고 있습니다. 통신 상대를 정하기 위해서 네트워크상에 존재하는 모든 기기에는 고유의 주소 같은 것이 할당되어 있습니다.
IP 데이터 전송은 Best Effort 방식입니다. 헤더가 깨지지 않았는지 확인하거나 목적지의 주소가 존재하는지 아닌지 정도의 판단 처리는 하지만, 재전송 처리는 수행하지 않습니다.
또한 최적의 경로로 보내는 역할과 수신측에서 IP 헤더에 쓰여진 목적지의 주소를 확인하고 자신의 앞으로 온 것만 수거합니다.
라우터는 네트워크간을 연결해서 패킷이 목적지에 전달될 때 가지 길 안내를 하는 기기입니다. 라우터의 네트워크 계층에서는 IP 헤더에 기록된 목적지의 IP 주소를 보고 그 다음 전송처를 결정합니다.
통신 세계에서는 컴퓨터 사이의 거리를 통과한 라우터의 개수로 나타냅니다. 이때 사용하는 단위를 홉이라고 합니다.
IP는 UDP와 똑같이 비커넥션형 통신을 수행합니다. 그래서 데이터가 상대에게 전달 됐는지 아닌지는 관여하지 않습니다. 이를 도와주는 프로토콜인 ICMP 프로토콜이 있습니다. ICMP는 IP 데이터그램의 통신 상태 등을 필요에 맞게 송신측에 알려줍니다.
'ping', 'tracert'는 ICMP 메시지를 사용해서 결과를 반환합니다
DHCP 프로토콜은 필요할 때만 자동으로 IP 주소를 할당해주는 프로토콜입니다.
DHCP 클라이언트는 요청을 할 때 수신 IP 주소를 '255.255.255.255'인 브로드캐스트 주소로 동일한 LAN 안의 모든 기기에 송신을 하게 됩니다.
이 요청에 대해서는 DHCP 서버만 응답합니다. DHCP 서버는 자동 IP를 보내주며 이를 수신받은 클라이언트는 다시'255.255.255.255' 주소를 확인 메세지를 보내고 이를 받은 DHCP 서버가 응답하면 통신이 완료됩니다.
회사 내나 가정 내 등 한정된 네트워크 안에서만 유효한 IP 주소를 사설 주소라고 합니다. 사설 주소는 네트워크가 다르면 중복되어도 문제가 없습니다.
사설 주소는 10.0.0.0 ~ 10.255.255.255, 172.16.0.0 ~ 172.31.255.255, 192.168.0.0 ~ 192.168.255.255 세가지 범위가 있습니다.
사설 주소 그대로는 인터넷에 접속할 수 없으므로 두 가지 장치로 해결을 할 수 있습니다.
사설 주소와 공인주소를 일대일로 대응시켜 변환하는 장치입니다. 확보하고 있는 공인 주소의 개수 이내라면 여러 개의 컴퓨터를 동시에 인터넷 접속할 수 있습니다.
하나의 공인 주소를 사용해서 여러 대의 컴퓨터를 접속할 수 있는 장치입니다. 포트 번호에 의해 각각의 컴퓨터를 식별하므로 같은 공인 주소를 동시에 사용할 수 있습니다.
참고 문서 및 링크