// 불펌스크립트시작 // 불펌스크립트 끝

1. 웹 보안?

- 우리는 인터넷을 접속하고 웹을 통하여 광고, 전자출판, 쇼핑, 인터넷 뱅킹, 블로그 등 다양한 서비스가 네트워크를 통해 제공되고 있다.

- 우리가 얻고자 하는 정보나 우리가 제공하는 정보들이 빠르게 교환되고 있는 것이 웹이다.

- 정보가 교환되는 과정에 눈에 보이진 않지만 다양한 패킷들이 이동하게 된다.

- 만약에 암호화 같은 보안방법이 없다면 우리가 보낸 정보(패킷)이 그대로 노출하게 되어 누군가가 정보(패킷)을 훔치거나 악의적으로 사용

즉, 수 많은 정보가 이동되는 웹에서 우리의 정보가 유출되거나 훼손되고, 기밀성 침해와 같은 피해를 받지 않기 위해 적용하는 보안방법

 

2. 웹 이란?

- www ( World Wide Web ) 이라 불리며 전 세계에 있는 네트워크에 연결 된 시스템을 통해 정보를 공유할 수 있는 정보 공간

- 웹은 Web Page의 문서로서 사용자에서 제공되는 형태

- 사용자가 요청(Request)하면 서버가 응답(Response)하여 제공

- 링크라는 기능을 통해 거미줄처럼 연결되는 있는 구조로 생각

 

3. 웹의 구조

 

Web Client 

 Internet Explorer / Firefox / Chrome - 브라우저(Browser)

 F/W

 방화벽 (데이터의 헤더영역 검사)

 Web F/W

 웹 방화벽 (데이터의 바디영역 검사)

Web Sever

 IIS(Window) / Apache(Linux) / Netscapte

 Web Application Server (WAS)

 ASP / PHP / JSP

 Database

 MS-SQL / MYSQL / Oracle

 

▶ 방화벽 기준으로 Client Side와 Server Side로 나누게 된다.

 

⊙ Client Side

- 클라이언트 스스로 일을 처리할 수 있도록 하여 서버의 효율성을 높일 수 있도록 하는것

- 서버의 작업량을 줄일 수 있다.

- 서버가 작업해야 할 부분 중에서 클라이언트가 할 수 있는 작업을 스스로 처리하기 때문에 서버의 작업량을 줄여줄 수 있어 효율적

- Html, 자바스트립트, 쿠키, 애플릿 등

 

⊙ Sever Side

- Web Server측에서 하는 작업들

- 웹 브라우저(클라이언트)에서 넘어온 자료를 데이터베이스에 저장 한다던지, 어떤 수학적인 계산을 하여 결과를 만들어 낸다든지 하는 것

- 이런 작업을 담당 하는것이 웹 프로그램이다.

- ASP, PHP, Perl, Python 등

 

1. 프로토콜의 이해

- 인터넷의 기본 프로토콜인 TCP/IP

- 원하는 웹사이트의 웹페이지를 볼 수 있는 HTTP

- 인터넷을 사용하여 이메일을 주고받으려면 SMTP나 POP3 등 프로토콜을 사용

- 인터넷을 이용하여 자료나 파일을 업로드 하거나 다운로드하려면 FTP 등 프로토콜을 사용

- 프로토콜은 네트워크에 연결된 컴퓨터끼리 데이터를 주고 받을 수 있도록 미리 약속한 전송규약(규칙)을 말한다.

 

 

2. 네트워크 계층 프로토콜

- TCP/IP 프로토콜에서 네트워크 계층 프로토콜은 IP, ARP, ICMP, IGMP로 구성

- 전송 계층의 패킷은 세그먼트 형태로 네트워크 계층으로 전송

- 네트워크 계층의 데이터는 IP 헤더가 추가된 IP 데이터그램으로 동작

 

 

▶ ARP

- IP 주소를 받아 네트워크 카드의 물리 주소인 MAC 주소로 변환시켜주는 프로토콜

 

▶ RARP ( Reverse ARP )

- 물리 주소인 MAC 주소를 IP 주소로 변환시켜주는 역주소 변환 프로토콜

 

 

▶ 주소 변환 프로토콜

- 논리적 주소인 IP 주소를 물리적 주소인 MAC 주소로 매핑시켜주는 것이 바로 ARP(Address Resolution Protocol)

 

 

▶ IP 주소와 MAC 주소 매핑

- A 컴퓨터에서 C 컴퓨터로 신호를 전송한다고 가정해 보자.

- 각 호스트의 IP 주소와 MAC 주소가 밑에 그림과 같을 때, IP 주소로 MAC 주소를 매핑시키는 절차는 다음과 같다.

 

 

▶ MAC 주소로 데이터 전송 ( ARP )

- A 호스트에서는 C 호스트의 MAC 주소를 알아내면 다음 과정을 거쳐 A에서 작성한 메세지를 C로 전송 할 수 있다.

 

 

▶ 역주소 변환 프로토콜 ( RARP )

- 호스트 컴퓨터의 물리 주소를 알고 있을 때 IP 주소를 알아내는데 사용한다.

- 컴퓨터를 네트워크에 처음 연결할 때나 디스크가 없는 컴퓨터를 부팅할때 사용하는 프로토콜이다.

- RARP(Reverse Address Resolution Protocol)는 이더넷, 토큰링 FDDI 등 근거리 통신망에서 사용할 수 있다.

 

 

▶ 인터넷 제어 메시지 프로토콜 ( ICMP )

- 네트워크의 호스트나 라우터에서는 예상치 못한 상황이나 오류가 발생할 수 있다.

- 이때 라우터에서 발생한 오류를 송신 측으로 전송하는데 사용하는 프로토콜이 바로 ICMP(Internet Control Message Protocol)이다.

- ICMP는 네트워크 계층에서 상주하지 않고, IP 데이터그램에 캡슐화되어 인터넷으로 전송된다.

 

 

 

- 타입 : ICMP 메시지의 종류를 15개의 서로 다른 값으로 명시한다.

- 코드 : 메시지의 종류를 타입보다 좀 더 세분화하는 추가적인 코드

- 검사합 : 메시지 오류 검사 기능을 한다.

- 나머지 헤더 : 타입과 코드 값에 따라 변경

 

⊙ ICMP 질의 메시지

- ICMP는 질의하거나 응답하여 정보를 구하는데 사용할 수 있으며, 이런 유형을 '질의 메시지'라고 한다.

 

 

⊙ ICMP 오류 메시지

- 가장 일반적인 ICMP 메시지로 전송을 시도할 때나 IP 데이터그램 전송 도중에 발생하는 다양한 형태의 오류 상태를 통보한다.

 

 

▶ 인터넷 그룹 메시지 프로토콜 ( IGMP )

- IGMP(Internet Group Message Protocol)은 인터넷에 연결한 컴퓨터가 멀티캐스트 그룹을 주위의 라우터에 알릴 수 있는 수단을 제공하는 프로토콜이다.

- 멀티캐스팅을 네트워크의 한 호스트 컴퓨터가 미리 지정된 다수의 컴퓨터에 메시지를 보낼 수 있도록 허용한다.

- IGMP는 멀티캐스트 라우터가 주기적으로 서브넷 호스트 컴퓨터 그룹에 IGMP 쿼리 메시지를 전송하고, 호스트 컴퓨터는 IGMP 쿼리 메시지에 응답하며 자신이 가입하려는 그룹 주소 정보를 IGMP 리포트 메시지를 이용하여 라우터에 알려주는 방식으로 동작

 

3. 전송 계층 프로토콜

- 전송 계층에서는 패킷 단위로 데이터를 전송하는데, 이 역할을 수행하는 기본 프로토콜은 전송 제어 프로토콜인 TCP와 사용자 데이터그램 프로토콜인 UDP다.

- 데이터를 송수신할 때 UDP나 TCP 중 어느 것을 사용하든지 상관없으나, UDP는 패킷의 확실한 전송을 보장하지 못하는 반면 TCP는 패킷의 확실한 전송을 보장한다.

 

 

▶ SPX

- NetWare의 연결 지향 프로토콜로, 패킷 접수 통지와 흐름 제어 등 TCP와 유사한 기능을 한다.

- NetWare 서버들은 프린트 큐 사이에서 프린트 서버 및 프린터 간의 통신에 SPX를 주로 사용하며, 인터넷 통신에는 거의 사용하지 않는다.

- SPX 패킷은 42바이트 헤더와 최대 534바이트 데이터로 구성되므로, 크기는 42~576바이트다.

 

 

- 연결제어(Connection Control) : 8비트 크기, 제어 기능 메시지를 포함

- 데이터 스트림 유형(Data Stream Type) : 8비트 크기, 데이터 영역의 정보 데이터 유형이나 연결 종료 과정에서 사용하는 코드 등을 포함

- 송신지 연결 ID(Source Connection ID) : 16비트 크기, 송신 시스템이 현재의 연결을 구별하는데 사용하는 수를 포함

- 수신지 연결 ID(Destination Connection ID) : 16비트 크기, 수신 시스템이 현재의 연결을 구별하는데 사용하는 수를 포함

- 순서 번호(Sequence Number) : 16비트 크기, 일련의 데이터 패킷 중에서 이 패킷의 위치를 지정

- 확인 일련번호(Acknowledgement Number) : 16비트 크기, 수신 시스템이 다음에 받을 패킷의 일련번호를 포함

- 위치 번호(Allocation Number) : 16비트 크기, 수신 시스템이 사용할 수 있는 패킷 수신버퍼의 크기를 나타낸다.

- 데이터(Data) : 응용 프로그램이나 상위 계층 프로토콜이 만든 데이터 정보, 크기는 가변적

 

▶ NCP

- SPX가 프린트 관련 작업을 담당한다면, NCP는 NetWare 클라이언트와 서버 간의 파일공유 등 다양한 네트워크 기능을 담당한다.

- TCP/UDP나 SPX와는 달리 서로 다른 포맷을 사용하며, 최근에는 NCPB라는 NCP 메시지로 메시지 여러 개를 한꺼번에 전송할 수 있는 기능도 구현하고 있다.

- NCP는 이런 여러 포맷의 메시지를 이용하여 클라이언트와 서버 간에 해석기 또는 번역기의 기능을 제공한다.

 

 

- 요청 유형(Request Type) : 16비트 크기, 요청 메시지의 종류를 나타낸다. 서비스 연결생성과 파일 서버 요청 등의 종류가 있다.

- 일련번호(Sequence Number) : 8비트 크기, 현재 메시지의 순서를 나타낸다.

- 연결 번호 로(Connection Number Low) : 8비트 크기, NetWare 서버에 연결된 클라이언트의 수를 나타낸다.

- 작업번호(Task Number) : 8비트의 유일한 값으로, 서비스를 요청하는 작업이 무엇인지를 구분하는 수다. 시스템은 전송받은 응답 메시지를 요청한 작업에 반환할때 이 값을 사용

- 연결 번호 하이(Connection Number High) : 8비트 크기, 현재 사용하지 않는다.

 

4. 응용 계층 프로토콜 및 서비스

▶ 프로토콜

- 응용 계층에서 제공하는 프로토콜에는 TCP 응용 계층 프로토콜인 FTP, HTTP, Telnet, SMTP, POP3, IMAP와 UDP 응용 계층 프로토콜인 DHCP, SNMP 프로토콜이 있다.

 

 

▶ FTP ( TCP 포트 : 21 )

- FTP는 인터넷에서 파일을 전송하는 기본 프로토콜이다.

- 파일을 전송하는 접속 대상인 컴퓨터를 '서버'라고 하며, 접속하려는 사용자의 컴퓨터를 '클라이언트'라고 한다.

- FTP 클라이언트는 자신의 소스 포트로 1023보다 큰 임의의 번호를 사용하며, FTP 서버의 포트 번호는 21을 사용한다.

- FTP 클라이언트 프로그램을 이용하여 접속하려는 서버의 주소(IP나 도메인)을 입력하여 접속이 완료되면 파일을 업로드하거나 다운로드할 수 있다.

 

 

▶ HTTP 서비스 ( TCP 포트 : 80 )

- HTTP는 클라이언트의 웹브라우저가 서버에 웹서비스를 요청(Request)하면, 서버가 적절한 응답(Response)을 하여 클라이언트의 사용자에게 웹페이지를 제공하는 서비스다.

- 즉, HTTP는 서버와 클라이언트 간에 하이퍼텍스트 문서를 송수신하는 프로토콜이다.

 

 

- HTTP 1.0에서는 전송받을 문서에 이미지가 있으면, 문서를 받을 때와 이미지를 받을 때 각각 연결을 설정한다.

 

 

- HTTP 1.1에서는 다시 연결을 설정하지 않고 연결된 소켓을 통해 데이터(이미지)를 전송 받는데, 프로토콜의 수행 성능이 향상된 것을 확인

 

 

▶ SMTP와 POP3, IMAP

- TCP/IP 프로토콜에서는 클라이언트와 메일 서버, 메일 서버와 메일 서버 간에 이메일을 교환하려고 SMTP와 POP3, IMAP를 사용한다.

- 메일 서버 간의 이메일을 SMTP로 교환하며, 메일 서버와 클라이언트 간에는 이메일 전송 과정에 따라 SMTP와 POP3 또는 IMAP를 각각 따로 사용한다.

 

 

⊙ SMTP ( TCP 포트 : 25 )

- 네트워크의 두 메일 서버 간에 이메일을 송수신하는데 사용하는 TCP/IP 프로토콜이다. 응용계층에 속하며, 전송 계층의 TCP에 기반을 둔 프로토콜이다.

- 사용자가 이메일을 메일 서버로 보낼 때는 SMTP를 사용하고, 메일 서버에서 자신의 이메일을 다운로드 할때는 POP3나 IMAP를 사용

 

⊙ POP3 ( TCP 포트 :110 )

- 이메일을 수신하는 표준 프로토콜로, POP의 최신 버전이다.

- 이메일을 수신하고 보관하려고 인터넷 서버에서 사용하는 프로토콜로 TCP/IP의 응용 계층에 속하며, SMTP에 의존한다.

 

 

⊙ IMAP ( TCP 포트 : 143 )

- 이메일을 저장, 복사하는 프로토콜이다.

- POP3처럼 SMTP 프로토콜에 의존하지만, POP3와 달리 IMAP에서는 내 컴퓨터에서 지운 이메일도 서버에 남아 있어 언제 어디서든 이메일을 다시 볼수 있다.

 

 

▶ SNMP ( UDP 포트 : 161 )

- 다른 네트워크 장치를 원격에서 관리할 수 있는 간단한 방법을 제공하는 인터넷 표준 프로토콜이다.

- 이 프로토콜을 적용할 수 있는 네트워크 장치에는 네트워크 카드나 프로그램, 허브나 라우터 같은 네트워크 장치 등이 있다.

- 네트워크를 관리하는 중앙 관리 시스템과 네트워크를 관리하는데 사용하는 개쳬정보인 MIB(Management Information Base)로 구성

- 중앙 관리 시스템은 네트워크를 관리하려고 하나 이상의 MIB를 모니터할 수 있다.

 

▶ DHCP ( UDP 포트 : 67, 68 )

- 네트워크의 각 노드에 유일한 IP 주소를 자동으로 할당하고 관리하는 서비스

- 관리자는 DHCP로 IP 주소를 관리하는 시간과 노력을 크게 줄일 수 있을 뿐만 아니라 IP 주소 할당 과정에서 발생할 수 있는 잠재적인 오류도 줄일 수 있어 네트워크의 효율이 높다.

 

 

- DHCP 서버가 동작하면 클라이언트들은 그 서버에 연결하여 유일한 IP 주소를 제공받는데, 그 과정은 다음과 같다.

 

 

▶ Ping 서비스

- TCP/IP에서 널리 사용하는 서비스 중 하나로, 모든 TCP/IP 설치에 포함되어 있다.

- 네트워크에 있는 다른 시스템에서 TCP/IP가 정상적으로 동작하는지 알려주는 프로그램

- ICMP를 사용하여 일련의 에코 메시지를 만들어 지정한 컴퓨터 이름이나 IP 주소 시스템에 전송한다.

- 이때 두 시스템 간에 에코 메시지를 주고받는 과정을 '핑잉(Pinging)'이라고 한다.

- 호스트의 IP 주소가 192.168.0.7이고, 게이트웨이 주소가 192.168.0.88이며, 수신지 IP주소가 58.142.193.69일 때 다음 과정을 거치면 어디에서 문제가 발생했는지 확인할수 있다.

① ping 127.0.0.1 또는 ping localhost

② ping 192.168.0.7

③ ping 192.168.0.88

④ ping 58.142.193.69

 

▶ Telnet ( TCP 포트 : 23 )

- 인터넷을 이용하여 내 컴퓨터에서 상대방의 컴퓨터를 원격으로 제어할 수 있도록 해주는 명령 라인 클라이언트/서버 프로그램

 

1. TCP / IP의 이해

- 네트워크는 서로 다른 기종의 컴퓨터로 구성되어 있어 각 네트워크 간에 공통으로 사용할 수 있는 프로토콜의 필요성이 대두되었다.

- 이에 따라 인터넷에서 컴퓨터 간의 통신이 가능하도록 표준화하여 채택한 통신규약이 바로 TCP/IP이다.

- 네트워크와 네트워크를 연결하는데 사용하는 프로토콜인 TCP/IP는 전송 제어 프로토콜 ( TCP, Transmission Control Protocol)과 인터넷 프로토콜 ( IP, Internet Protocol )을 의미한다.

- 인터넷에서 사용하는 응응 프로그램은 대부분 이 TCP/IP 프로토콜을 이용하여 데이터를 교환한다.

 

 

▶ 네트워크 접속 계층

- 모든 표준 및 임의 네트워크를 지원할 수 있도록 하고 있다.

- 이더넷, 802.11x, MAC/LLC, SLIP, PPP 등

- 송신 측 컴퓨터에서는 상위 계층에서 전달받은 패킷에 물리적 주소인 MAC 주소 정보가 있는 헤더를 추가하여 프레임을 만든 후 그 프레임을 하위 계층인 물리 계층에 전달한다.

- 수신 측 컴퓨터에서는 데이터 링크 계층에서 추가한 헤더를 제거하여 상위 계층인 네트워크 계층으로 전달한다.

 

▶ 네트워크 계층

- 인터넷 계층이라고도 하며, 네트워크의 패킷 전송을 제어한다.

- 데이터를 전송할 때 결로는 네트워크 계층에서 선택하는데, TCP/IP 프로토콜에는 IP와 ARP, ICMP, IGMP가 있다.

- TCP/IP에서 가장 중요한 프로토콜 중 하나인 IP는 네트워크의 주소 체계를 관리하고, 데이터그램을 정의하며 전송에 필요한 경로를 결정

- 송신 측 컴퓨터에서는 상위 계층에서 전달받은 패킷에 논리적 주소인 IP주소를 포함하는 헤더를 추가하여 하위 계층인 데이터 링크 계층으로 전달한다.

- 수신 측 컴퓨터에서는 하위 계층에서 전달받은 패킷의 헤더 정보를 확인한 후 송신 측 컴퓨터의 네트워크 계층에서 추가한 헤더를 제거하여 상위 계층인 전송 계층으로 전달한다.

 

 

▶ 전송 계층

- 상위 계층에서 볼 때 두 호스트 간의 데이터 전송을 담당하는 계층으로, TCP와 UDP 프로토콜을 사용한다.

- 네트워크 양단의 송수신 호스트 간에 신뢰성 있는 전송 기능을 제공하는 것으로, OSI 참조 모델에서는 세션 계층의 일부와 전송 계층에 해당

- TCP/IP에는 시스템 논리 주소와 포트가 있어 각 상위 계층의 프로세스를 연결하여 통신한다.

- TCP는 전송되는 패킷에 오류와 중복이 없게 하고, 보낸 순서대로 상대편이 받을 수 있도록 신뢰성 있는 데이터 전송을 보장하는 프로토콜

- 신뢰성이 있는 만큼 헤더의 오류코드에 대응할 수 있는 각종 정보가 들어 있다.

 

 

▶ 응용 계층

- TCP/IP 프로토콜의 범위는 응용 계층의 프로토콜까지 포함

- FTP(파일 전송), SMTP(이메일), SNMP(Simple Network Management Protocol : 네트워크 관리 ) 등이 있다.

- TCP/IP 프로토콜을 이용한 응용 프로그램 중에서 사용자가 직접 사용하는 인터넷 메일 프로그램(아웃룩 익스프레스)이나 웹브라우저(인터넷 익스플로러) 등을 응용 계층으로 분류할 수 있다.

 

▶ TCP/IP 주소의 구조

⊙ 물리 주소

- 링크 주소 또는 통신망에서 정의된 노드의 주소, 이더넷 네트워크인터페이스 카드(NIC) 6바이트(48비트) 주소 등을 말한다.

 

⊙ 인터넷 주소

- 인터넷에서는 기존 물리 주소와는 별도로 각 호스트를 식별할 수 있는 유일한 주소를 지정해야 한다.

 

⊙ 포트 주소

- 수신지 컴퓨터까지 전송하려면 IP 주소와 물리 주소가 필요하다.

- 인터넷 통신의 최종 목적은 한 프로세스가 다른 프로세스와 통신할 수 있도록 하는 것이다.

 

 

 

2. IP ( Internet Protocol )

▶ 인터넷에 연결된 모든 컴퓨터에는 고유의 주소가 부여되는데, 이를 'IP주소'라고 한다.

- 현재 사용하는 IP 주소 체계는 IP Ver. 4이다

- IP 주소는 8비트 크기의 필드 네 개를 모아서 구성한 32비트(4바이트) 논리 주소다.

- xxx.xxx.xxx.xxx, 즉 163.152.19.114처럼 .(점)으로 구분한 10진수 형태 네 개로 구성된다.

- 한 바이트가 가질 수 있는 10진수는 0~255이므로, IP 주소의 값을 0.0.0.0에서 255.255.255.255까지다.

 

 

▶ 일반 우편 주소를 시, 동, 번지 등으로 구분하는 것처럼 IP주소도 네트워크 주소(Net ID)와 호스트 주소(Host ID)로 구분한다.

- 네트워크 주소는 전체 네트워크를 좀 더 작은 네트워크로 분할하여 각 호스트가 속한 네트워크를 대표한다.

- 네트워크 주소는 8비트, 16비트, 24비트 크기로 분류한다.

- 호스트 주소는 네트워크 주소로 표현하는 네트워크 내부에서 각 호스트의 주소를 표현하는 역할을 하며, 전체 32비트에서 네트워크 주소를 제외한 나머지에 해당한다.

 

 

 

▶ IP 주소 체계

- IP주소를 효율적으로 배정하려고 클래스라는 개념을 도입했다. 클래스에는 A, B, C, D, E 다섯 종류가 있다.

- 이 중 D클래스는 IP 멀티 캐스팅용, E 클래스는 자원을 확보하려고 예비용으로 분류해 놓았기 때문에 실제 사용하는 것은 A, B, C 클래스 세 종류 뿐이다.

- 클래스는 IP 주소의 맨 처음 바이트의

- 시작 1비트가 0으로 시작하면 A클래스

- 시작 2비트가 10으로 시작하면 B클래스

- 시작 3비트가 110으로 시작하면 C클래스

- 시작 4비트가 1110으로 시작하면 D클래스

- 시작 4비트가 1111로 시작하면 E클래스

 

⊙ A 클래스

- 네트워크 주소로 8비트, 호스트 주소로 24비트를 사용한다.

- 네트워크 주소의 가장 왼쪽에 해당하는 비트는 0으로 고정되어 있는데, 이것이 A클래스를 구분하는데 사용하는 식별자

- 첫 번째 바이트의 첫 비트가 0으로 시작하기 때문에 맨 처음 숫자는 0~127로 시작

- 범위는 0.0.0.0에서 127.255.255.255까지가 된다.

- 0.0.0.0은 사용하지 않는 주소

- 127.x.x.x는 시스템 루프백 주소(가상으로 할당한 인터넷 주소)라서 사용하지 않는 주소

- 실제로 사용하는 주소는 1~126까지로, 1.0.0.0~126.255.255.255가 된다.

- 가장 왼쪽 비트가 0이며, 첫번째 옥텟이 Net ID(7비트)

- 27=128 중 126개 사용 (두 개는 특수 목적에 사용)

- 224=16,777,216 중 호스트 16,777,214개 사용(Host ID가 모두 0인 것과 모두 1인 것은 특별한 의미가 있는 주소)

 

⊙ B 클래스

- 구분하는데 사용하는 식별자는 10으로 시작

- 네트워크 주소에 16비트, 호스트 주소에 16비트를 배정하는 클래스

- IP 주소의 시작이 128~191로 시작하고, 기본 네트워크 마스트는 255.255.0.0이다.

- 네트워크 주소는 128.0.0.0~191.255.0.0, 호스트 주소는 2바이트로 호스트 65,534개를 구성할 수 있다.

- 이것은 A클래스와 동일하게 네트워크 주소(0.0)와 브로드캐스트 주소(255.255)를 제외한 호스트의 수다.

- IP주소가 128.1.1.1인 호스트는 128.1.0.0 네트워크에 속하며, 호스트 주소는 1.1이다.

- 가장 왼쪽 2비트가 10이며, 옥텟이 두 개인 Net ID(14비트)

- 214=16,384개 사용 가능

- Host ID로 16비트 사용

- 216=65,536개 중 호스트(라우터) 65,534개 사용 가능(두 개는 특별한 주소)

 

⊙ C 클래스

- 소규모 네트워크에서 가장 많이 사용하는 클래스로 C클래스를 구분하는데 사용하는 식별자는 110으로 시작

- 호스트 배정에 총 8비트를 사용할 수 있으므로 호스트를 최대 254개 사용할 수 있다.

- IP주소의 시작이 192~223으로 시작하며, 기본 네트워크 마스크는 255.255.255.0이다.

- 네트워크 주소는 192.0.0.0~223.255.255.0, 호스트 주소는 1바이트로 호스트 주소는 254개 사용할 수 있다.(0, 255 제외)

- IP주소가 200.100.100.100인 호스트는 200.100.100 네트워크에 속하며, 호스트 주소는 100이다.

- 가장 왼쪽 3비트가 110이며, 옥텟이 세 개인 Net ID(21비트)

- 221=네트워크를 2,097,152개 가질 수 있음

- Host ID로 8비트 사용(28=256)

- 호스트(라우터)를 254개 가질 수 있음.

 

 

⊙ D 클래스

- IP 주소는 224~239까지로 시작하며, 멀티캐스트(데이터 수신 대상이 네트워크에 연결된 일부 컴퓨터) 용도로 사용한다.

⊙ E 클래스

- IP 주소는 240~255까지로 시작하며, 미래에 사용하려고 남겨놓은 주소다.

- 255.255.255.255는 전체 컴퓨터에 대한 브로드캐스트(네트워크에 연결된 전체 컴퓨터를 수신 대상으로 하는) 주소로 사용한다.

 

 

 

3. IP 프로토콜

- IP는 TCP/IP 프로토콜 계층의 네트워크 계층에서 사용하는 프로토콜이다.

- TCP는 오류가 발생하면 해당 정보를 재전송할 수 있는 신뢰성 있는 연결 지향형 프로토콜

- IP는 간단한 오류 검사 기능만 있어 신뢰성이 보장되지 않는 비연결형 데이터 그램 프로토콜

- IP는 패킷을 수신지까지 최선을 다해 전송하지만, 전송 완료까지는 보장하지 않는다.

 

▶ 연결형 서비스 ( Connection-Oriented )

- 송수신자 사이에 논리적 연결을 확립하고 데이터를 전송하는 방법

- 연결형은 전송 계층에 해당되는 기능으로, 앞에서 살펴본 TCP의 방식

 

▶ 비연결형 서비스 ( Connetionless )

- 송수신자 간에 논리적인 연결을 확립하지 않은 채 데이터를 전송하는 방법

- 비연결형 서비스는 UDP 방식이며, 신뢰성 있는 데이터 전송을 할 수 없어 상위 계층인 TCP 등에서 신뢰성을 보장해야한다.

 

- 네트워크에서 송신 측이 동일한 수신측으로 전송하는 데이터그램이 다양한 경로를 통해 도착할 수 있음을 보여준다.

 

 

▶ 데이터그램의 구조

- IP계층의 패킷을 데이터그램라고 함

- 가변 길이이며, 헤더와 데이터 부분으로 구성

- 헤더는 크기가 20~60바이트고, 패킷을 전달하는데 필요한 모든 정보를 포함

 

 

- 버전 : IP 헤더 안에 있는 버전(Version) 번호 필드(4비트)는 인터넷 버전을 규정하며, 현재 버전은 4

- 헤더 길이 : IP 헤더 안에 있는 다음 4비트 필드는 데이터그램 헤더의 전체 길이를 4바이트 단위로 나타낸다.

- 서비스 유형 : 8비트 필드는 라우터가 처리해야 하는 데이터그램 규정을 나타낸다.

 

 

▶ TOS

- IP 데이터그램을 전달하는 특정 서비스 품질(Quality of Service) 기능을 제공하려고 고안된 4비트의 서브필드로 각 비트는 0과 1의 값을 가질 수 있는데, 오직 한 비트만 1의 값을 가진다.

- 서비스 유형에 따라 지연, 처리량, 신뢰성, 비용 등을 설정할 수 있으며, 상호 베타적이어서 하나의 갑이 1로 설정되면 나머지 값은 무조건 0

 

 

▶ 검사합 ( Checksum )

- TCP/IP 프로토콜에서 많이 사용하는 오류 제어 방법

- 패킷 전송 중 발생하는 헤더 부분의 오류를 검사

- 송신자가 전송하는 패킷에 검사합을 함께 보내면 수신자는 패킷과 함께 검사합을 계산해 조건을 만족하면 패킷을 받고, 그렇지 않으면 패킷을 폐기한다.

 

 

▶ IPv6 주소 체계

- 16바이트(128비트)로 구성

- 주소를 읽기 쉽도록 16진수 콜론으로 표현

- 128비트는 길이가 2바이트인 영역 여덟 개로 나뉘며, 16진수 표기법에서 2바이트는 16진수 네 개로 표현. 전체적으로 16진수 32개로 표현

 

 

- 128비트 IP주소는 단축해서 표현할 수 있는데, 콜론 두 개 사이에 있는 수(섹션) 네개에서 앞쪽은 0은 생략할 수 있다.

- 이런 생략 방식을 이용하면 0056은 56으로, 000D는 D로 0000은 0으로표기할 수 있다.

 

 

- 0으로만 구성된 색션은 0을 모두 지우고, 콜론 두 개로 대치할 수 있는데, 주소당 한 번만 사용된다.

- 섹션 두 개에 0이 있다면, 그 중 주소 한개에서만 생략 방식을 이용할 수 있다.

 

 

▶ IPv6 데이터그램

- IPv6의 각 패킷은 기본 헤더와 페이로드(Payload)로 구성

- 페이로드는 선택적인 확장 헤더들과 상위 계층의 데이터로 구성

- 기본 헤더는 40바이트며, 페이로드는 65,535바이트까지 차지한다.

 

 

▶ 기본 헤더의 종류는 다음과 같다

⊙ 버전 : 4비트

- IP 버전을 나타내며, 값은 6이다.

 

⊙ 우선순위 : 4비트

- 동시 접속을 대한 패킷의 우선순위를 규정

 

⊙ 흐름 레이블 : 24비트

- 데이터의 특정 흐름을 다룰 수 있도록 설계된 것이다.

 

⊙ 페이로드 길이(Payload Length) : 16비트

- 기본 헤더를 제외한 IP 데이터그램의 전체 길이를 규정

 

⊙ 다음 헤더(Next Header) : 8비트

- 데이터그램에서 기본 헤더의 다음 헤더를 정의

 

 

▶ IPv4와 IPv6의 패킷 헤더와 비교

- IPv6은 헤더의 길이가 고정되어 있어 헤더 길이 필드가 제거되고 서비스 유형 필드도 제거된다.

- 그 기능을 우선순위와 흐름 레이블 필드가 대체한다.

- 총 길이 필드 또한 제거되어 페이로드 길이 필드로 대체된다.

- 식별, 플래그, 옵션 필드는 기본 헤더에서 제거되고, 이 필드는 확장 헤더에 포함된다.

 

 

▶ 전환 기술(IPv4에서 IPv6으로)

- IPv4 네트워크망과 IPv6 네트워크망 간에 주소 변환기를 이용하여 IP를 상호 연동

- 게이트웨이를 이용하여 IPv4와 IPv6 주소 체계를 호환하는 기술

- 이 기술은 IPv4 클라이언트가 IPv6 서버에 접속하거나 반대로 IPv6 클라이언트가 IPv4 서버에 접속할 때 사용한다.

 

▶ 응용 계층 게이트웨이 방식(응용 계층)

- 응용 계층 게이트웨이 방식은 변환(트랜잭션) 서비스를 위한 ALG(응용 수준 게이트웨이), 웹사이트 정보를 숨기고 캐시 매커니즘으로 서비스의 성능을 향상시키는데 사용한다.

- ALG가 두 프로토콜(IPv4와 IPv6)을 동시에 지원할 떄는 두 프로토콜 간 변환 메커니즘으로 사용할 수 있다.

- 응용 계층 게이트웨이 방식은 응용 계층에서 변환되며, 각 서비스는 IPv4와 IPv6에 밀폐되어 있어 FTP, DNS, Telnet 서비스 등 응용 프로토콜에 내장된 주소를 변환하는데 용이하다.

- 하지만 각 서비스를 위한 ALG는 IPv4와 IPv6에서 모두 실행되어야만 한다.

 

▶ 전송 계층 릴레이 방식(전송 계층)

- TCP/UDP의 IPv4 세션과 TCP/UDP의 IPv6 세션을 중간에서 릴레이한다.

- 송 계층 릴레이 방식에서 TCP 릴레이 서버는 여러 동작 과정을 거쳐 전송계층에서 전환된다.

① TCP 요청이 릴레이 서버에 도착하면, 네트워크 계층은 수신지가 서버의 주소가 아니어도 TCP 요청을 TCP 계층으로 전송

② 서버는 실제 수신지로 TCP 연결을 하나 더 생성한 후 연결이 두 개 구축되면, 서버는 이연결 중 하나에서 데이터를 읽어 나머지 하나의 연결에 기록한다.

 

 

▶ 헤더 변환 방식(네트워크 계층)

- 네트워크 계층(IP)에서 IPv6 패킷 해더를 IPv4 패킷 헤더로 또는 IPv4 패킷 헤더를 IPv6 패킷 헤더로 변환하는 방식

- IPv4를 사용할 때는 헤더 변환이 필요

- 헤더 변환은 IP 계층에서 변환을 의미

- IPv4 패킷을 IPv6 또는 그 반대로 헤더를 변환하는 것을 SIIT(Stateless IP/ICMP Translation)에서 정의한다.

 

 

4. TCP(전송 제어 프로토콜)

▶ TCP 연결형 데이터 서비스

- 송신 측 TCP 포트에서 수신 측 TCP 포트로 바이트의 스트림을 전송하는 연결형 데이터 전달 서비스를 제공

- TCP 사용자가 연결을 요청하면, TCP 프로토콜과 수신 측 TCP 사용자가 연결 설정에 동의하여 TCP 연결을 설정

- 연결 지향형 프로토콜은 송신 측 컴퓨터와 수신 측 컴퓨터와 수신 측 컴퓨터가 데이터를 전송하기 전에 먼저 데이터를 송수신할 수 있는 연결 통로를 만들고 데이터를 전송하는 프로토콜을 말한다.

 

 

▶ 포트 번호

- 포트는 TCP가 상위 계층으로 데이터를 전달하거나 상위 계층에서 TCP로 데이터를 전달할 때 상호 간에 사용하는 데이터의 이동 통로

- 통신할 때 파일을 동시에 다운로드 할 수 있는 이유는 TCP 프로토콜이 포트를 여러 개 사용해서 상위 계층의 프로그램과 각각 따로 통신

- TCP 포트 범위는 0~65,534까지의 정수

 

 

- 웹서비스나 이메일 서비스 등은 클라이언트가 편리하게 접속할 수 있도록 해당 서비스에 미리 할당해 놓은 포트 번호를 사용

- 주요 인터넷 서비스에 정해 놓은 포트 번호를 '잘 알려진 포트 번호'라고 하며 1~1023까지 할당

 

 

▶ TCP 세그먼트

- 전송을 위해 바이트 스트림을 세그먼트 단위로 나눈다.

- 세그먼트란 TCP를 이용하여 두 장치 간에 전달하는 데이터들의 단위를 말한다.

 

 

 

▶ 송신지 포트 번호 ( Source Port Address )

- 세그먼트를 전송하는 호스트에 있는 응용 프로그램의 포트 번호

- 16비트의 포트 번호는 0~65,535 범위 내에 있을 수 있다.

 

▶ 수신지 포트 번호 ( Destination Port Address )

- 수신지 호스트에서 수행하는 프로세스가 사용하는  포트 번호

- 클라이언트가 수신지 호스트를 요청하는 서버라면 대부분은 잘 알려진 포트 번호

 

▶ 순서 번호 ( Sequence Number )

- 세그먼트에 포함된 데이터의 첫 번째 바이트에 부여된 것

- 32비트 부호 없는 번호

- 0부터 시작해서 232-1을 초과하면 다시 0으로 되돌아온다.

- TCP는 신뢰성 있는 연결을 보장하려고 전송하는 각 바이트마다 번호를 부여하는데, 순서 번호는 수신지 TCP에 세그먼트의 첫 번째 바이트가 순서 번호에 해당하는 바이트라는 것을 알려준다.

 

▶ 확인 응답 번호 ( Acknowledgement Number )

- 세그먼트를 수신하는 노드가 상대편 노드에서 수신하려는 바이트의 번호

- 이 번호는 성공적으로 수신한 마지막 바이트의 순서 번호+1이다.

 

▶ 헤더 길이

- TCP 헤더 길이를 4바이트 워드 값으로 나타내며 헤더의 길이는 20~60바이트가 될 수 있다.

- 이 필드 값은 5x4=20에서 15x4=60 사이의 값이 될 수 있는 것이다.

 

▶ 예약 ( Reserved )

- 나중에 사용하려고 예약된 6비트 필드

 

▶ 플래그

- 프로토콜의 동작을 제어하는데 사용하는 비트 단위의 플래그

 

▶ 윈도우 크기 ( Window Size )

- 상대방이 유지해야 하는 바이트 단위의 윈도우 크기를 정의

- 필드의 길이가 16비트이기 때문에 윈도우의 최대 크기는ㄴ 65,535바이트

 

▶ 검사합

- 의사 헤드를 포함한 헤드 부분의 오류를 검출하는 검사합 계산이 포함

 

⊙ 상위 계층에서 사용하는 오류 검출 방법인 검사합을 수행하는 과정 ( 송신 측에서는 다음 과정을 거친다.)

① 데이터 단위를 각각 n(보통 16)비트인 섹션 m개로 나눈다.

② 모든 섹션은 합을 만들려고 1의 보수를 사용하여 서로 더한다.

③ 합은 보수화되어 검사합이 된다.

④ 검사합의 값을 데이터와 함께 보낸다.

 

⊙ 수신 측에서는 다음 과정을 거친다.

① 데이터 단위를 각각 n비트인 섹션 m개로 나눈다.

② 모든 섹션은 합을 만들려고 1의 보수를 사용하여 서로 더한다.

③ 합은 보수화된다.

④ 결과가 0이면 오류가 없는 것이고, 그렇지 않으면 오류가 발생한 것이다.

 

 

▶ TCP 연결 관리

- 포트 번호만 사용하여 응용 프로그램을 식별하는 UDP와는 달리 TCP는 연결을 사용하여 응용 프로그램을 식별

 

▶ 연결 설정(3-Way 핸드셰이킹)

 

 

▶ 연결 종료

 

 

▶ 확인 응답

- 수신 측에서 데이터를 수신했을때 이 사실을 송신 측에 통보하는 것

- 핸드셰이킹이 해당

- 확인 응답은 ACK(ACKnowledgement)

- 이 응답 확인이 있어야 다음 데이터를 전송할 수 있다.

 

 

- 수신 측에서 데이터를 수신한 후에도 네트워크 문제로 재전송될 때가 있다.

- 이때는 이미 수신한 데이터이므로 재전송한 데이터는 폐기해야 되는데, 순서 번호를 설정하여 구분할 수 있다.

 

 

▶ TCP 흐름 제어

- TCP는 원래의 데이터를 패킷이라는 작은 단위로 분할하여 전송하기 때문에 수신 측의 컴퓨터는 수신한 패킷을 재결합하여 다시 원래의 데이터로 만들어야 한다.

- 패킷을 전송할 때 네트워크 상황에 따라 패킷의 도착 순서가 바뀔 수도 있고, 중간에서 사라지는 패킷을 한 번에 하나씩 송수신하는 것보다 여러 패킷을 한 번에 송수신한 후 수신 확인 신호를 전송하는 것이 훨씬 효율적이다.

- 한 번에 전송하는 패킷의 개수를 ' 윈도우 크기 ' 또는 ' 수신 버퍼의 크기 ' 라고 한다.

- 데이터를 전송할 때 한 번에 전송할 수 있는 전체 패킷의 크기를 ' TCP 윈도우 크기 '라고 하는데, 윈도우 크기가 크면 한번에 여러 패킷을 전송할 수 있다.

 

 

▶ 슬라이딩 윈도우 ( Sliding Window )

- 송신 측 컴퓨터는 윈도우 크기에 따라 1~4번까지 패킷을 전송하고, 수신 측 컴퓨터에서 수신 확인 ACK 신호를 수신하면 ACK 신호에서 요청한 5번 패킷 위치로 송신 윈도우를 오른쪽으로 옮긴다.

- 다시 윈도우 안의 패킷들을 전송하고, 수신 측 컴퓨터에서 ACK 신호를 수신하면 ACK 신호에서 요청한 9번 패킷 위치로 송신 윈도우를 옮김

- 송신 버퍼 역할을 하려고 송신 윈도우를 이동하는 방식

 

 

5. UDP(사용자 데이터그램 프로토콜)

- RFC 768 문서에 정의된 비연결 지향 프로토콜을 말한다.

- TCP(연결 지향 프로토콜)와 달리 패킷이나 흐름 제어, 단편화 및 전송 보장 등의 기능은 제공하지 않는다.

- UDP 헤더는 TCP 헤더에 비해 간단하므로 상대적으로 통신 과부하가 적다.

- UDP 헤더의 크기(8바이트)는 TCP 헤더의 크기(20바이트)보다 작다.

- DNS(Domain Name System), DHCP(Dynamic Host Configuration Protocol), SNMP 등이 있다.

 

 

⊙ 송신지 포트 번호 : 16비트

- 데이터 영역의 데이터 정보를 만든 전송 시스템의 프로세스나 응용 프로그램을 말한다.

- TCP 헤더의 송신지 포트와 같은 기능을 수행한다.

 

⊙ 수신지 포트 번호 : 16비트

- 데이터 영역의 데이터 정보를 처리할 수신 시스템의 프로세스나 응용 프로그램을 말한다.

- TCP 헤더의 송신지 포트와 같은 기능을 수행한다.

 

⊙ 총 길이 : 16비트

- UDP 헤더와 데이터의 길이를 바이트 단위로 표현

- UDP 메시지에 얼마나 많은 데이터 정보가 포함되었는지 나타낸다.

 

⊙ 검사합 : 16비트

- 수신 측에서는 이 정보를 사용하여 UDP 헤더와 데이터 및 IP 헤더의 오류를 검사한다

- UDP 표준에서는 검사합이 선택 사항이며, 이 영역을 사용하지 않으면 UDP 패킷의 영역은 0의 값을 가진다.

 

⊙ 데이터

- 송신지 포트의 응용 계층 프로세스가 만든 데이터 정보

- 크기는 가변적

+ Recent posts