일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- oracle
- 이클립스
- HTTP
- 보안
- 오라클
- Tomcat
- Server
- Eclipse
- git
- 자바스크립트
- JSON
- java
- 인텔리제이
- IntelliJ
- mybatis
- 모바텀
- 자바
- 상태코드
- DBeaver
- Linux
- Javascript
- 디비버
- 자바문법
- Redis
- 마이바티스
- db
- SQL
- 톰캣
- JQuery
- svn
- Today
- Total
JongTachi의 개발 블로그
3. 네트워크의 공통 언어 TCP/IP (네트워크의 공동 규칙).Chapter_1 본문
3-1 네트워크의 공통언어
1) PC도 스마트폰도 서버도 전부 다 TCP/IP를 사용한다.
1장에서 배웠다 싶이 PC와 스마트폰 등이 통신하는 규칙을 프로토콜이라 하고, 복수의 프로토콜을 조합한 것이 네트워크 아키텍처이다. 예전에는 TCP/IP 뿐만 아니라 여러가지 네트워크 아키텍처가 있었지만 지금은 거의 TCP와 IP만 이용한다. TCP/IP로 통신하는 PC와 스마트폰, 각종 네트워크 기기 전반을 호스트라고 부른다.
2) TCP/IP의 계층구조
TCP/IP의 계층구조 다음과 같다.
- 애플리케이션층 (최상위층): 애플리케이션에서 다룰 데이터 형식과 절차를 결정한다.
- 트랜스포트층: 애플리케이션에 데이터를 할당한다.
- 인터넷층: 엔드투엔드 통신을 한다.
- 네트워크 인터페이스층 (최하위층): 프로토콜은 자유롭게 선택할 수 있다. 통신 상대와 같은 것을 사용할 필요는 없다.
4개의 계층에의 프로토콜이 모두 정상적으로 제기능을 해야 비로소 통신이 이루어진다. 그리고 어떤 계층이 기능을 발휘하려면, 그 하위 계층이 정상적으로 동작한다는 것을 전제로 한다.
3-2 데이터를 전송하는 역할을 하는 계층
1) 네트워크 인터페이스층
네트워크 인터페이스층의 역할은 네트워크 안에서 데이터를 전송하는 것이다. 기술적인 관점에서 말하자면, 하나의 네트워크는 라우터와 레이어3 스위치로 구획되는 범위 또는 레이어2 스위치로 구성하는 범위이다.
예를 들어, 레이어2 스위치에 연결된 PC의 인터페이스에서 같은 레이어2 스위치에 연결된 다른 PC의 인터페이스까지 데이터를 전송할 수 있다. 그때 0,1의 디지털 데이터를 전기신호 등의 물리적 신호로 변환해 전송 매체로 전달한다.
네트워크 인터페이스층의 구체적인 프로토콜로서 유선(이더넷)이나 무선 LAN(Wi-Fi), PPP 등을 들 수 있다. 네트워크 인터페이스층의 프로토콜이 통신 상대와 같아야할 필요는 없다.
2) 인터넷층
한 네트워크에 모든 기기가 연결되는 것은 아니다. 많은 네트워크가 존재하고 거기에 다양한 기기가 연결 되는데 인터넷층은 그 네트워크 사이에서 데이터를 전송하는 역할을 한다. 네트워크끼리 연결하고 데이터를 전송하는 기기가 라우터이다. 또한 원격지 네트워크에서 최종적인 출발지와 목적지 사이의 데이터 전송을 가리켜 엔드투엔드 통신이라 부른다.
인터넷층에 포함되는 구체적인 프로토콜은 IP, ICMP, ARP 등이다. 엔드투엔드 통신에 이용하는 프로토콜은 IP이고 ICMP와 ARP는 IP를 도와주는(서브 역할) 프로토콜이다.
3-3 애플리케이션의 동작을 준비하는 계층
1) 트랜스포트층
PC로 네트워크를 통해 복수의 애플리케이션을 사용하는데 그 배후에는 트랜스포트층이 활약을한다. 트랜스포트층의 역할은 데이터를 적절한 애플리케이션에게 분배하는 일이다. 최하층부터 트랜스포트층까지 바르게 동작하면, 출발지와 목적지 애플리케이션 간에 데이터를 송수신할 수 있게 된다. TCP/IP 트랜스포트층에 포함되는 프로토콜은 TCP와 UDP이다. TCP를 이용하면 어떤 이유로 데이터가 유실되더라도 그 사실을 검출해 데이터를 다시 보내준다. TCP에는 엔두투엔드의 신뢰성을 확보해주는 기능이 있다.
2) 애플리케이션층
애플리케이션층의 역할은 애플리케이션의 기능을 실행하기 위한 데이터의 형식과 처리 절차 등을 결정하는 것이다. 단순한 0, 1이 아니라, 문자와 이미지 등 인간이 인식할 수 있도록 데이터를 표현한다.
애플리케이션층에 포함된 프로토콜은 HTTP, SMTP, POP3, DHCP, DNS 등 많이있다. HTTP는 친숙한 구글 크롬, 마이크로소프트 엣지/인터넷 익스플로어 등 웹브라우저에 사용된다. SMTP와 POP3는 아웃룩, 썬더버드 등과 같은 전자메일 SW에 이용된다. 단 애플리케이션층에 포함된 프로토콜이라 해서 반드시 애플리케이션에서 이용하는 것은 아니다. DHCP와 DNS는 애플리케이션의 통신을 준비하기 위한 프로토콜이다.
3-4 데이터 송수신 규칙
1) 프로토콜의 제어정보 '헤더'를 만든다.
통신 주체인 애플리케이션이 데이터를 주고받게 하려면, 복수의 프로토콜을 조합할 필요가 있다. TCP/IP에서는 네 개의 프로토콜을 조합한다. 각 프로토콜에는 각 기능을 실현하기 위한 제어 정보(헤더)가 필요하다. 예를 들어, 데이터를 전송하는 프로토콜이라면, 헤더에는 출발지와 도착지 주소가 지정된다. 각 프로토콜은 데이터를 전송할 때 헤더를 추가한다. 헤더를 추가하는 과정을 캡슐화라고 부른다. 헤더로 데이터를 포장한다고 생각하면 된다. 프로토콜이 데이터를 받으면, 각 프로토콜 헤더를 바탕으로 적절하게 처리하여 헤더를 벗겨내고 다시 다른 프로토콜로 처리를 넘긴다. 이 동작을 역캡슐화 또는 비캡슐화라고 부른다.
2) 물리적인 신호로 변환된다.
Client PC의 웹브라우저에서 웹서버 애플리케이션으로의 데이터 송신과 전송, 그리고 수신하는 모습을 생각해보자. 웹브라우저의 데이터는 우선 HTTP 헤더로 캡슐화되어 TCP로 넘어간다. TCP 헤더가 추가되고 다시 IP 헤더가 추가된다. 마지막으로는 이더넷 헤더와 FCS가 추가되면 네트워크로 내보낼 데이터 전체가 완성된다. FCS는 에러 체크를 위한 정보이다. 이처럼 TCP/IP의 상위 계층 프로토콜에서부터 하위 계층 프로토콜의 헤더가 점차 캡슐화되면서, 네트워크로 내보내는 데이터에는 여러 프로토콜의 헤더가 추가된다.
3-5 데이터 수신, 전송할 때의 규칙
1) 0과 1의 데이터로 되돌려서 전송한다.
네트워크 기기는 수신한 물리적인 신호를 일단 0과 1의 데이터로 되돌린다. 그리고 각각의 네트워크 기기의 동작에 대응하는 헤더를 참조하여 데이터를 전송한다.
2) 헤더로 목적지를 확인하고 수신
웹서버 애플리케이션이 동작하는 웹서버까지 물리적인 신호가 도착하면, 0과 1의 데이터로 변환한다. 그리고 이더넷 헤더를 참조해 자기 앞으로 온 데이터인지 확인한다. 또한 FCS로 데이터에 오류가 없는지 확인한다. 자기 앞으로 온 데이터라는 것을 알았다면, 이더넷 헤더와 FCS를 제거하고 IP헤더 처리를 넘긴다. 다음으로 TCP는 TCP 헤더를 참조해 어느 애플리케이션의 데이터인지 확인한다. TCP는 TCP 헤더를 제거하고 웹서버 애플리케이션으로 데이터 처리를 넘긴다. 이렇게 해서 웹서버 애플리케이션까지 데이터가 도달하면, HTTP 헤더와 그 뒤의 데이터 부분을 처리한다. 송신하는 쪽과 수신하는 쪽이 반드시 정해져 있는 것은 아니다. 웹서버 애플리케이션이 데이터를 송신하는 쪽이 되고, 웹브라우저가 데이터를 수신하는 쪽이 된다.
3-6 데이터를 부르는 방법은 다양하다.
1) 계층별로 데이터를 부르는 방법
애플리케이션의 데이터에는 다양한 프로토콜의 헤더가 추가되어 네트워크 상으로 내보내진다. 네트워크 아키텍처에 따라 데이터를 부르는 방법이 구분된다.
- 애플리케이션층: 메세지
- 트랜스포트층: 세그먼트 또는 데이터그램(트랜스포트층에선 TCP를 이용할 때 세그먼트, UDP를 이용할 때 데이터그램이라고 부른다.)
- 인터넷층: 패킷 또는 데이터그램(인터넷층에서는 IP 패킷 또는 IP 데이터그램이라고 부른다)
- 네트워크 인터페이스층: 프레임
2) 데이터를 부르는 방법의 예
웹브라우저 통신의 경우, 데이터에 HTTP 헤더를 추가해 HTTP 메시지가 된다. 그리고 HTTP 메시지에 TCP 헤더를 추가하면 TCP 세그먼트가 된다. TCP 세그먼트에 IP 헤더를 추가하면 IP패킷(=IP 데이터그램)이다. IP 패킷에 이더넷 헤더와 FCS를 추가하면, 이더넷 프레임이라고 부른다. 부르는 방법에 차이가 있으므로, 네트워크 통신을 생각할 때 어느 계층을 주목하는지 명확해진다.
3-7 데이터를 목적지까지 전송한다.
1) IP란?
IP(Internet Protocol)는 매우 중요하다. 우선 IP의 역할은 엔드투엔드 통신을 하는 것이다. 즉 네트워크 상의 어떤 PC에서 다른 PC 등으로 데이터를 전송하는 것이 그 역할을 한다.
2) 보내고 싶은 데이터를 IP 패킷으로 만든다.
IP로 데이터를 전송하기 위해서는 데이터에 IP 헤더를 추가해 IP 패킷으로 만들어야 한다. IP 헤더에는 여러 정보가 포함되어 있지만, 가장 중요한 것은 IP 주소이다. IP 주소를 이용해 데이터의 출발지와 목적지를 나타내기 때문이다.
IP로 전송하는 데이터란, 애플리케이션 데이터에 애플리케이션층 프로토콜의 헤더와 트랜스포트층 프로토콜의 헤더가 추가된 것이다. 그리고 IP 패킷에는 다시 네트워크 인터페이스층 프로토콜의 헤더가 추가되어 네트워크로 내보내진다. 그리고 IP 패킷에는 다시 네트워크 인터페이스층 프로토콜의 헤더가 추가되어 네트워크로 내보내진다. 목적지가 다른 네트워크에 접속된 경우는 중간에 라우터가 존재한다. 라우터가 IP 패킷을 전송하는 것을 가리켜 라우팅이라고 한다.
3-8 통신 상대는 누구?
1) IP 주소의 개요
IP 주소란 TCP/IP에서 통신 상대가 되는 호스트를 식별하기 위한 식별 정보이다. TCP/IP 통신을 할 때 데이터에 IP 헤더를 추가해 IP 패킷으로 만든다. TCP/IP 통신에서 IP 주소는 반드시 지정되어야한다!
2) 인터페이스에 IP 주소를 설정한다.
IP 주소는 이더넷 등의 인터페이스와 연관지어 설정한다. IP 프로토콜은 호스트의 운영체제에서 동작한다. 그리고 호스트 내부에서 인터페이스와 IP의 프로토콜 부분을 연관지어 IP 주소를 설정하게 됩니다. PC 등에는 복수의 인터페이스를 탑재할 수도 있다. 예를들어, 노트북 PC에는 유선 이더넷 인터페이스와 무선 LAN 인터페이스가 같이 탑재돈 경우가 많고, 인터페이스마다 IP 주소를 설정할 수 있다. 즉 IP 주소는 호스트 자체가 아니라 정확하게는 호스트의 인터페이스를 식별한다.
3) IP 주소 표기하기
IP 주소는 32비트이므로 0, 1이 32개 나열된다. 그런 긴 숫자열을 사람이 이해하기 어려우니 8비트씩 10진수로 변환하고 '.'로 구분해서 표기한다. 8비트 10진수는 0~255이므로, 0~255 사이의 숫자를 '.'로 구분해 4개 나열하는 형태가 일반적인 IP 주소이다. 256 이상의 수치가 포함된 IP 주소는 잘못된 IP 주소이다. 이러한 표기를 도트형 10진 표기라고 부른다.
'Network' 카테고리의 다른 글
[Network] telnet, ipconfig 안 될 때(telnet client) (0) | 2023.06.23 |
---|---|
3. 네트워크의 공통 언어 TCP/IP (네트워크의 공동 규칙).Chapter_3 (0) | 2022.11.14 |
3. 네트워크의 공통 언어 TCP/IP (네트워크의 공동 규칙).Chapter_2 (0) | 2022.06.04 |
2. 네트워크를 만드는 것 (0) | 2022.05.16 |
1. Network의 기본 (0) | 2022.05.15 |