데이터를 주고받는 주체는 애플리케이션
피어투피어 애플리케이션: 서버를 거치지 않고 클라이언트끼리 직접 데이터를 주고받는 애플리케이션(ex SNS의 메신저)
통신에 필요한 규칙을 프로토콜이라고 하고 프로토콜의 집합을 네트워크 아키텍처라고 한다. 서로 같은 언어로 대화하는 것처럼, 컴퓨터끼리의 통신에서도 같은 네트워크 아키텍처를 이용할 필요가 있다.
네트워크의 공통언어는 TCP/IP
( = 네트워크의 아키텍처로서 TCP/IP를 사용한다.)
TCP/IP로 통신하는 PC와 스마트폰 등을 호스트라고 한다.
출처: https://www.ibm.com/support/knowledgecenter/ko/ssw_aix_71/com.ibm.aix.networkcomm/tcpip_protocols.htm
주요 프로토콜 :
네트워크 인터페이스층 - 이더넷, 무선LAN(wifi) 등
인터넷층 - IP, ICMP, ARP 등
트랜스포트층 - TCP/UDP
애플리케이션층 - HTTP, SMTP, POP3, DNS 등
→ 각 계층에 포함된 프로토콜을 조합해 애플리케이션이 통신한다.
각 프로토콜의 처리를 하기 위한 제어정보를 헤더라고 한다.
데이터 송수신 규칙: 캡슐화(데이터에 헤더 추가), 역캡슐화(헤더 제거, 다른 프로토콜에 처리를 넘기는 것)
IP(Internet Protocol)의 역할: '엔드투엔드 통신'을 하는 것
pc→pc 데이터를 전송하는 역할
데이터를 전송하기 위해서 데이터에 IP헤더(에서 가장 중요한 것은 IP주소)를 추가해 IP패킷을 만들어야 함.
목적지가 다른 네트워크에 있을때는 라우터가 IP패킷을 라우팅한다.
TCP/IP통신에서는 IP주소(데이터의 출발지와 목적지)를 반드시 지정해야 한다.
IP주소 표기는 8비트씩 4개로(총 32비트) 0~255 사이의 10진수로 변환하고 '.'로 구분
32비트 IP주소의 어디까지가 네트워크부인지 명시한 것이 서브넷 마스크(연속한'1', 연속한'0')
ICMP(Internet Control Message Protocol)로 IP에서 데이터를 정상적으로 전송할 수 있는지 확인한다.
어떤 이유로 IP패킷이 폐기되면, ICMP 도달불능 메시지로 출발지에 통보한다.
ping 커맨드로 ICMP 에코 요청/응답 메시지를 보내서, 지정한 IP주소와 통신할 수 있는지 확인한다. ping 커맨드는 네트워크 연결 문제를 해결, 테스트 및 진단하는 데 가장 많이 사용되는 도구 중 하나이다.
ARP: IP주소와 MAC주소를 대응시킨다.
TCP: 확실하게 애플리케이션의 데이터를 전송, 전송하고 싶은 애플리케이션의 데이터에 TCP헤더를 추가해 TCP세그먼트로서 전송한다. 필요하면 TCP로 데이터를 분할한다. TCP로 데이터를 분할하는 크기를 MSS(Maximum Segment Size)라고 부른다.
UDP: 애플리케이션에 데이터를 배분하기 위해 이용하는 프로토콜, IP전화의 음성 데이터와 같은 실시간 데이터 전송을 할 때 UDP를 이용한다. UDP에는 크기가 큰 데이터를 분할하는 기능도 없다.
웹브라우저와 웹서버 애플리케이션은 HTTP를 이용해 웹페이지 파일을 전송한다.
프록시 서버는 웹 접속을 대신하는 서버다.(기업에서 관리를 위해 도입) 클라이언트 PC의 웹브라우저에서 프록시 서버에 접속할 때에는 TCP 포트 번호 8080을 사용하는 경우가 많다.
웹사이트를 볼 때 흐름: 웹브라우저에서 URL을 입력 → 웹서버의 IP주소를 해석 → TCP 커넥션 확립 → HTTP리퀘스트 전송과 HTTP리스폰스 전송