Network

191230 Monday ~ 200103 Friday


1. 기본적으로 알아야 할 컴퓨터 기초

  • 데이터 표현
    • 2진법, 10진법, 16진법(0x00)
  • HW 구성요소
    • CPU(central processing unit)
      • processor : 물리적 코어
    • RAM(memory : random access memory) : 주 기억
      • process : 실행되고 있는 프로그램
    • 하드 디스크(SSD/HDD) : 보조 기억
    • I/O 장치
  • 운영 체제(OS : operating system)
    • 하드웨어를 관리해주는 프로그램
    • 구성요소 : 커널, 쉘, 응용 프로그램
  • 파일의 특징
    • 파일의 이름(확장자)
      • exe, txt, zip, egg, etc. -> 4D 5A -> 윈도우에서 실행파일 일 경우 binary의 시작
    • 파일의 경로
      • 다양하게 지정할 수 있는 파일의 경로

2. VMware(workstation) : 가상화에 관련된 회사 이름

  • 정의
    • 하이퍼바이저 기반 가상 머신 소프트웨어
  • 하이퍼바이저
    • 가상 머신을 만들어주는 프로그램
    • HOST에서 GUEST를 만들어주는 프로그램
    • 현재 사용하려는 workstation이 하이퍼바이저
  • 실습
    • vmware 설치
    • 가상 머신 생성

3. 네트워크

  • 정의
    • 노드들이 데이터를 공유할 수 있게 하는 디지털 전기 통신망의 하나이다.
    • 분산되어 있는 컴퓨터를 통신망으로 연결한 것을 말한다.
    • 네트워크에서 여러 장치들은 노드 간 연결을 사용하여 서로에게 데이터를 교환한다.
    • *노드 : 네트워크에 속한 컴퓨터 또는 통신 장비
    • 네트워크? 인터넷? www?
      가장 큰 네트워크 인터넷
      www : world wide WEB
  • 분류
    • 크기에 따른 분류
      • LAN, WAN, MAN, 기타
      • LAN : 가까운 지역을 하나로
      • WAN : 멀리 있는 지역을 하나로
    • 연결 형태에 따른 분류
      • Star 형 : 중앙 장비에 모든 노드가 연결된 형태
      • Mesh 형 : 여러 노드들이 서로 그물처럼 연결된 형태
      • 혼합형(Star + Mesh)
  • 통신 방식
    • 유니 캐스트 : 1:1 통신
    • 멀티 캐스트 : 1:다수 통신
    • 브로드 캐스트 : 같은 네트워크(Local)에 있는 모든 대상에게 통신
  • 프로토콜
    • 정의 : 일종의 양식, 네트워크에서 노드와 노드가 통신할 때 어떤 노드가 어느 노드에게 어떤 데이터를 보내는지 작성하기위한 양식
    • 가까운 곳으로 통신 : Ethernet 프로토콜(MAC 주소)
    • 멀리 있는 곳으로 통신 : ICMP, IPv4, ARP(IP 주소)
    • 여러가지 프로그램으로 통신 : TCP, UDP(port 번호)
    • 여러 프로토콜들로 캡슐화 된 패킷(Ethernet/IPv4/TCP/데이터)
  • 실습
    • tracert [ip or address] : 네트워크 경로 추적
      네트워크 장비 30개 이하로 연결되어 있다(30홉 이하)
    • wireshark : 네트워크 패킷을 볼 수 있다.

4. 네트워크 모델

IMAGE

IMAGE

  • TCP/IP, OSI 7
  • TCP/IP (4계층)
  • OSI 7 Layer (7계층) - 표준
    • 응용 http
    • 표현
    • 세션
    • 전송 TCP, UDP
    • 네트워크 IP, ICMP, ARP
    • 데이터 링크 이더넷
    • 물리
  • 비교
    • 공통
      • 계층적 네트워크 모델
      • 계층간 역할 정의
    • 차이
      • 계층의 수 차이
      • OSI는 역할 기반, TCP/IP는 프로토콜 기반
      • OSI는 통신 전반에 대한 표준
      • TCP/IP는 데이터 전송기술 특화

5. 네트워크를 통해 전달되는 데이터, 패킷 - encapsulation, decapsulation

  • 정의
    • 네트워크 상에서 전달되는 데이터를 통칭하는 말로 네트워크에서 전달하는 데이터의 형식화된 블록. 패킷은 제어 정보와 사용자 데이터로 이루어지며 사용자 데이터는 페이로드라고도 한다.
    • 패킷 (헤더/페이로드/풋터)
    • 여러가지 프로토콜들로 캡슐화 된 패킷(encapsulation)
      • encapsulation 과정은 ppt에서 발췌
      • 상위 계층에서 하위 계층으로 내려간다.
    • encapsulation(보낼 때) <==> decapsulation(받을 때)

IMAGE

IMAGE

6. OSI7layer - 2계층 :: 데이터 링크

  • 기능
    • 하나의 네트워크 대역 즉, 같은 네트워크 상에 존재하는 여러 장비들 중에서 어떤 장비가 어떤 장비에게 보내는 데이터를 전달, 오류제어와 흐름제어 수행
  • 네트워크 크기
    • 하나의 네트워크 대역 LAN에서만 통신할 때 사용한다.
    • 다른 네트워크와 통신 할 때는 항상 3계층의 도움이 필요하다.
  • 2계층에서 사용하는 주소 : MAC 주소(물리적 주소)
    • ppt에서 이미지 발췌
  • 2계층의 프로토콜 : Ethernet
    • Destination Address(6byte : 목적지) + Source Address(6byte : 출발지) + Ethernet Type(2byte : 타입) + 페이로드
    • 상위 프로토콜이 ipv4라면 Ethernet Type : 0800
    • 상위 프로토콜이 ARP라면 Ethernet Type : 0806

IMAGE

7. OSI7layer - 3계층 :: 네트워크

  • 기능

    • 다른 네트워크 대역 즉, 멀리 떨어진 곳에 존재하는 네트워크까지 어떻게 데이터를 전달할지 제어하는 일을 담당
    • 발신에서 착신까지의 패킷의 경로를 제어
  • IP주소를 사용 -> IPv4, 서브넷 마스크, 게이트웨이 필요(멀리있는 곳과 통신하기위한 기본 설정)

  • 3계층 프로토콜

    • ARP 프로토콜
    • IPv4 프로토콜
    • ICMP 프로토콜
  • 일반적인 IP 주소 (classful, classless)

    • A클래스, B클래스, C클래스, D클래스, E클래스
  • 서브넷 마스크(서브넷팅 <==> 슈퍼네팅)

    • 클래스풀한 네트워크 대역을 나눠주는데 사용하는 값
    • 어디까지가 네트워크 대역을 구분하는데 사용하고 어디서부터 호스트를 구분하는데 사용하는지 지정
    • 1로 시작, 1과 1사이에는 0이 올 수 없음
  • 사설 IP와 공인 IP (+ classful = 현재 사용되고 있는 IPv4)

    IMAGE

    • NAT(IP를 바꾸는 기술) : 사설 IP => 공인 IP OR 공인 IP => 사설 IP
    • port forwarding
  • 특수 IP

    • 0.0.0.0 : wildcard
    • 127.0.0.x : 본인
    • 게이트웨이 주소 : 쓸 수 있는 ip중에 가장 작거나 큰 ip 주소(작은 것을 쓰는 경우가 많다)

8. 네트워크 Subneting -> 가용한 IP를 구하기 위해 작업을 진행한다.

1) 네트워크 ID와 서브넷 마스크를 2진수로 변경
2) 서브넷 마스크를 1씩 증가시키면서 네트워크를 쪼갠다
3) 네트워크 ID에서 서브넷 마스크가 증가한 부분을 1로 꽉 찰때까지 1씩 증가시킨다
4) 쪼개진 각각의 네트워크의 네트워크 ID는 1씩 증가시킨 값 그대로
5) 쪼개진 각각의 네트워크의 브로드캐스트 주소는 뒷 부분을 전부 1로 채운다
6) 각 네트워크에서 사용 가능한 IP주소의ㅡ 범위는 네트워크 ID + 1, 브로드캐스트 주소 - 1
1. 211.100.10.0/24  네트워크를 각 네트워크 당 60개의 HOST가 사용할 수 있도록 subneting

네트워크 ID 0 : 	11010011.01100100.00001010.00 000000
네트워크 ID 1 : 	11010011.01100100.00001010.01 000000
네트워크 ID 2 : 	11010011.01100100.00001010.10 000000
네트워크 ID 3 : 	11010011.01100100.00001010.11 000000
서브넷 마스크 : 	11111111.11111111.11111111.11 000000

1) subnet mask : 11111111.1111111.11111111.11000000, /26
2) subnet 개수 : 4개
3) HOST의 개수 : 64개
4) 마지막 subnet의 Network-ID : 211.100.10.192
5) 첫번째 subnet의 broadcast 주소 : 211.100.10.63
6) 두번째 subnet의 사용 가능한 IP 범위 : 211.100.10.65 ~ 211.100.10.126
2. 195.168.12.0/24 네트워크를 8개의 네트워크로 사용할 수 있도록 subneting

네트워크 ID 0 :		11000011.10101000.00001100.000 00000
네트워크 ID 1 :		11000011.10101000.00001100.001 00000
네트워크 ID 2 :		11000011.10101000.00001100.010 00000
네트워크 ID 3 :		11000011.10101000.00001100.011 00000
네트워크 ID 4 :		11000011.10101000.00001100.100 00000
네트워크 ID 5 :		11000011.10101000.00001100.101 00000
네트워크 ID 6 :		11000011.10101000.00001100.110 00000
네트워크 ID 7 :		11000011.10101000.00001100.111 00000
서브넷 마스크 :		11111111.11111111.11111111.111 00000

	네트워크 ID	    브로드캐스트주소	 범위
0번	195.168.12.0	195.168.12.31		195.168.12.1 ~ 195.168.12.32
1번	195.168.12.32	195.168.12.63		195.168.12.33 ~ 195.168.12.62
2번	195.168.12.64	195.168.12.95		195.168.12.65 ~ 195.168.12.94
3번	195.168.12.96	195.168.12.127		195.168.12.97 ~ 195.168.12.126
4번	195.168.12.128	195.168.12.159		195.168.12.129 ~ 195.168.12.158
5번	195.168.12.160	195.168.12.191		195.168.12.161 ~ 195.168.12.190
6번	195.168.12.192	195.168.12.223		195.168.12.193 ~ 195.168.12.222
7번	195.168.12.224	195.168.12.255		195.168.12.225 ~ 195.168.12.254
3. 152.0.61.0/24 네트워크를 각 네트워크 당 100개의 HOST가 사용할 수 있도록 subneting

152.0.61.0/25	152.0.1.127
152.0.61.128/25	152.0.1.255
4. 189.101.7.0/24 네트워크를 각 네트워크 당 50개의 Host가 사용할 수 있도록 subnetiing
	네트워크 ID		    브로드캐스트주소	 범위
0번	189.101.7.0/26		189.101.7.63/26		189.101.7.1/26 ~ 189.101.7.62/26
1번	189.101.7.64/26		189.101.7.127/26	189.101.7.65/26 ~ 189.101.7.126/26
2번	189.101.7.128/26	189.101.7.191/26	189.101.7.129/26 ~ 189.101.7.190/26
3번	189.101.7.192/26	189.101.7.255/26	189.101.7.193/26 ~ 189.101.7.254/26
5. 206.81.128.0/18 네트워크를 8개의 네트워크로 사용할 수 있도록 subneting
206     .81      .10 000 000.00000000
206     .81      .10 001 000.00000000
206     .81      .10 010 000.00000000
206     .81      .10 011 000.00000000
206     .81      .10 100 000.00000000
206     .81      .10 101 000.00000000
206     .81      .10 110 000.00000000
206     .81      .10 111 000.00000000
11111111.11111111.11 111 000.00000000

	네트워크 ID		    브로드캐스트주소	 범위
0번	206.81.128.0		206.81.135.255		206.81.128.1 ~ 206.81.135.254
1번	206.81.136.0		206.81.143.255		206.81.136.1 ~ 206.81.143.254
2번	206.81.144.0		206.81.151.255		206.81.144.1 ~ 206.81.151.254
3번	206.81.152.0		206.81.159.255		206.81.152.1 ~ 206.81.159.254
4번	206.81.160.0		206.81.167.255		206.81.160.1 ~ 206.81.167.254
5번	206.81.168.0		206.81.175.255		206.81.168.1 ~ 206.81.175.254
6번	206.81.176.0		206.81.183.255		206.81.176.1 ~ 206.81.183.254
7번	206.81.184.0		206.81.191.255		206.81.184.1 ~ 206.81.191.254

9. 3계층 프로토콜 - ARP

  • ARP가 하는일

    • 같은 네트워크 대역에서 통신을 하기위해 필요한 MAC주소를 IP주소를 이용해서 알아오는 프로토콜이다.
    • 같은 네트워크 대역에서 통신을 한다고 하더라도 데이터를 보내기 위해서는 7계층부터 캡슐화를 통해 데이터를 보내기 때문에 IP주소와 MAC주소가 모두 필요하다. 이때 IP주소는 알고 MAC주소는 모르더라도 ARP를 통해 통신이 가능하다.
    • 보안상 중요하다.
  • 프로토콜 구조

    IMAGE

    • ARP에서 opcode는 요청인지 응답인지만 판단한다.
      • 0x0001 : 요청
      • 0x0002 : 응답
  • 통신 과정

    • ARP 프로토콜을 채워주고 destination MAC 주소를 0으로 초기화 한다.
    • encapsulation을 진행하는 과정에서 destination을 F로 초기화 하여 broadcast를 설정하여 모든 곳(같은 네트워크 대역의)에 보낸다.
    • 스위치에서는 ARP를 까보지 않는다.
    • 받은 곳에서 ARP를 까보고 본인에게 보낸 것이 맞는지 확인한다.
    • IP주소가 일치하는곳에서 RESPONSE를 보낸다.
    • RESPONSE과정은 encapsulation을 실시하여 진행한다.
  • 프레임의 최소 최대 단위(참고)

    • 최소 60 Byte
    • 최대 1514 Byte
  • 실습 : wireshark

    IMAGE

    • ARP 프로토콜을 사용해서 스니핑이 가능하다. - 어태커가 게이트웨이인 것처럼 속여(arp 캐시 테이블에 접근하여 속인다) 스니핑을 할 수 있다.

10. 3계층 프로토콜 - IPv4, ICMP

  • IPv4 Protocol

    • 네트워크 상에서 데이터를교화하기 위한 프로토콜

    • 데이터가 정확하게 전달될 것을 보장하지 않는다.

    • 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다.(악의적으로 이용되면 DoS 공격이 됨)

    • 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장함.

    • 프로토콜 구조

      IMAGE

      • version : IPv4 이므로 4
      • IHL : 20 / 4 = 5 로 설정(바이트 단위)
      • Type Of Service : 현재는 사용하지 않음(0으로 설정)
      • Total Length : 페이로드 포함 전체 길이
      • Identification : 식별자
      • flag : 3bit
        • 0번 : 안씀
        • 1번 : 쪼개지 않고 보내겠다(최대 전송 단위 : 1500Byte)
        • 2번 : 쪼개서 보내겠다.
        • 010 으로 최대 전송단위를 넘는다면 전송되지 않는다.
      • Fragment Offset : 쪼개서 보내져 받았을 때 순서를 알 수 있게하기 위해서 시작부분에서 얼마나 떨어져 있는지 알려준다.
      • Time to live : DeadLock을 방지하기 위해서 설정
        • 윈도우는 128로 설정
        • 리눅스는 32로 설정
      • protocol : 상위 프로토콜이 무엇인지 알 수 있음(확인이 필요하다)
        • TCP(6), UDP(17), ICMP(1)
      • Header Checksum : 윗 부분을 본인이 계산하고 받은것과 대조하여 다른 부분이 있는지 확인
    • 보내는 Offset을 변경하여 DoS공격을 할 수 있다.

  • ICMP Protocol

    • Internet Control Message Protocol

    • 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 __오류메시지__를 전송 받는 데 주로 쓰인다.

    • 프로토콜 구조의 Type과 Code를 통한 오류 메시지를 전송 받는다.

    • 프로토콜 구조

      IMAGE

      • Type
        • 8 : 요청
        • 0 : 응답
        • 3 : ?
        • 5 : ?
  • 라우팅 테이블…?

    • 어디로 보내야 하는지 설정되어 있는 테이블
    • 지도가 있어야 찾을 수 있다.
    • 모르는 곳에 가야한다면 0.0.0.0을 통해서 나간다(게이트웨이)
  • MAC address를 알지 못한다면 APR 프로토콜을 사용하여 MAC address를 알아낸다.(ARP 캐시 테이블, 라우팅 테이블 완성?)

  • 다른 네트워크와 통신하는 과정

IMAGE

	- encapsulation start
	icmp request
	0800 4d56 0001 0001

	ipv4
	4500 003c 12ab 0000 0801 0000 c0a8 0a0a c0a8 1414

	ethernet
	cccc cccc cccc aaaa aaaa aaaa 0800 (receive mac / send mac / ethernet)
	- encapsulation end

	ethernet
	2222 2222 2222 1111 1111 1111 0800

	ethernet
	4444 4444 4444 3333 3333 3333 0800

	- decapsulation start
	ethernet
	bbbb bbbb bbbb dddd dddd dddd 0800

	ipv4
	4500 003c 12ab 0000 0801 0000 c0a8 0a0a c0a8 1414

	icmp request
	0800 4d56 0001 0001
	- decasulation end

	- encapsulation start
	icmp reply
	0800 4d56 0001 0001

	ipv4
	4500 003c 12ab 0000 8001 0000 c0a8 1414 c0a8 0a0a

	ethernet
	dddd dddd dddd bbbb bbbb bbbb 0800 (receive mac / send mac / ethernet)
	- encapsulation end

	이후 생략...

11. 3계층 프로토콜 - IPv4의 조각화

  • 정의
    • 큰 IP 패킷들이 적은 MTU(Maximum Transmission Unit : 일반적으로 1500 Byte)를 갖는 링크를 통하여 전송되려면 여러 개의 작은 패킷으로 쪼개어/조각화 되어 전송되어야 한다.
    • 목적지까지 패킷을 전달하는 과정에 통과하는 각 라우터마다 전송에 적합한 프레임으로 변환이 필요하다.
    • 일단 조각화되면, 최종 목적지에 도달할 때 까지 재조립도디지 않는 것이 일반적
    • IPv4에서는 발신지 뿐만 아니라 중간 라우터에서도 IP 조각화가 가능
    • IPv6에서는 IP단편화가 발신지에서만 가능
    • 재조립은 항상 최종 수신지에서만 가능하다.
  • IPv4(20 Byte) + 페이로드 <= MTU
  • 식별자(identification)은 동일하게 한다.

IMAGE

  • ICMP는 마지막에만 붙인다.

  • 라우팅 테이블 :: netstat -r

  • Offset = 페이로드 / 8 : 한정된 크기에서 큰 값을 표현하기 위하여

  • 예제

1. 전송하려는 데이터 크기 [8937] 바이트
MTU [2300]바이트

데이터를 [2300] - 20 = [2280] 씩 조각화
	MTU	 IPv4
패킷 플래그 오프셋(크기/8) 데이터크기
0번 1 0 2280
1번 1 285 2280
2번 1 570 2280
3번 0 855 2097

마지막 패킷의 페이로드 크기 : 2105 (ICMP + 데이터)

2. 전송하려는 데이터 크기 [2379] 바이트
MTU [980]바이트


데이터를 [980] - 20 = [960] 씩 조각화
	MTU	 IPv4
패킷 플래그 오프셋(크기/8) 데이터크기
0번 1 0 960
1번 1 120 960
2번 1 240 960
3번 0 360 459

마지막 패킷의 페이로드 크기 : 467 (ICMP + 데이터)

3. 전송하려는 데이터 크기 [4618] 바이트
MTU [1370]바이트

데이터를 [1370] - 20 = [1350] 씩 조각화
	MTU	 IPv4
패킷 플래그 오프셋(크기/8) 데이터크기
0번 1 0 1350
1번 1 ? 1350
2번 1 ? 1350
3번 0 ? 568

마지막 패킷의 페이로드 크기 : 576 (ICMP + 데이터)

4. 전송하려는 데이터 크기 [4800] 바이트
MTU [1500]바이트

데이터를 [1500] - 20 = [1480] 씩 조각화
	MTU	 IPv4
패킷 플래그 오프셋(크기/8) 데이터크기
0번 1 0 1480
1번 1 185 1480
2번 1 370 1480
3번 0 555 360

마지막 패킷의 페이로드 크기 : 368 (ICMP + 데이터)

5. 전송하려는 데이터 크기 [4432] 바이트
MTU [1500]바이트

데이터를 [1500] - 20 = [1480] 씩 조각화
	MTU	 IPv4
패킷 플래그 오프셋(크기/8) 데이터크기
0번 1 0 1480
1번 1 185 1480
2번 1 370 1472

마지막 패킷의 페이로드 크기 : 1480 (ICMP + 데이터)

12. OSI7layer - 4계층 :: 전송

  • 전송 계층

    • 송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스를 제공한다.
    • 전송 계층은 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 그리고 다중화와 같은 편리한 서비스를 제공한다.
    • 전송 프로토콜 중 가장 잘 알려진 것은 연결 지향 전송 방식을 사용하는 전송 제어 프로토콜(TCP)이다. 보다 단순한 전송에 사용되는 사용자 데이터그램 프로토콜(UDP)도 있다.
  • 종류 :: TCP, UDP

    • TCP :: 상태가 있다 IMAGE
    • UDP :: 상태가 없다(비연결형 서비스) IMAGE
  • 포트 번호(좀 더 자세한 학습이 필요하다)

    • 특정 프로세스와 특정 프로세스가 통신하기 위하여 사용한다.
    • 하나의 포트는 하나의 프로세스만 가능하다.
    • 하나의 프로세스가 여러 개의 포트를 사용하는 것은 가능하다.
    • 포트 번호는 일반적으로 정해져 있지만 무조건 지켜야 하는 것은 아니다.
    • 예를 들어 일반적으로 웹 서비스는 80번 포트를 사용하지만 웹 서비스가 항상 80번 포트를 사용해야만 하는 것은 아니다.
  • Well-Known 포트, Registered 포트, Dynamic 포트 :: 절대적인 것은 아니다

    • Well-Known 포트 :: 전 세계적으로 유명한 IMAGE
    • Registered 포트 :: 조금 유명한 IMAGE
    • Dynamic 포트 :: 일반 사용자들이 사용하는 IMAGE
  • netstat -ano :: PID 확인하기

  • 서비스 :: 백그라운드에서 실행되는 프로그램

  • 주소들의 사용(참고)

    • MAC 주소
      • 특정 컴퓨터를 컴퓨터가 찾아갈 때 사용하는 주소
    • IP 주소
      • 특정 네트워크 대역을 찾아가서 특정 컴퓨터를 찾아갈 때 사용하는 주소
    • 포트 번호
      • 특저어 컴퓨터에서 동작하고 있는 특정 프로그램을 찾아가는 주소

13. 비연결지향형 UDP

  • 하는 일

    • 사용자 데이터그램 프로토콜(User Datagram Protocol)은 유니버셜 데이터그램 프로토콜이라고도 한다.
    • UDP의 전송 방식은 너무 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 심지어는 통보 없이 누락시키기도 한다.
    • UDP는 일반적으로 오류의 검사와 수정이 필요 없는 프로그램에서 수행할 것으로 가정한다.
  • 구조

    IMAGE

  • 사용하는 프로그램

    • DNS 서버
    • tftp 서버(파일전송 프로그램)

14. 연결지향형 TCP

  • 하는 일

    • 전송 제어 프로토콜(Transmission Control Protocol)은 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러없이 교화할 수 있게 한다.
    • TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 비접속형 사용자 데이터그램 프로토콜(UDP)을 사용한다.
    • TCP는 UDP보다 안전하지만 느리다.
  • 구조 IMAGE IMAGE

  • TCP를 이용한 통신과정 :: 연결 수립 과정(3-Way-HandShake)

    • TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정
    1. 클라이언트가 서버에게 요청 패킷을 보내고
    2. 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고
    3. 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다. IMAGE
    • SYN(sync), ACK(acknowledge)
    • a, b를 잘 봐야 한다.
    • 패킷을 보내고 받는 과정에서 encapsulation(Send시 발생), decapsulation(receive시 발생)이 이루어진다.
    • 알아보기 :: 세션 하이재킹 커넥션을 뺏어온다.
  • TCP를 이용한 통신과정 :: 데이터 송수신 과정(HTTP, FTP와 같은 데이터를 포함한 통신)

    • 3 WAY HANDSHAKE 와 비슷한 과정을 거친다.
    • data의 크기에 따라서 ack의 크기가 바뀐다.
  • TCP 상태전이도 :: LISTEN, ESTABLISHED

    IMAGE

    • LISTEN : connection을 할 준비가 되었다.
    • ESTABLISHED : 3 way handshake가 완료되어 통신할 준비가 되었다.

    IMAGE

15. NAT와 포트포워딩

  • NAT(Networt Address Translation) 정의

    • IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다.
    • 패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 Checksum도 다시 계산되어 재기록해야 한다.
    • NAT를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다.
    • 하지만 꼭 사설 IP를 공인 IP로 변환하는데에만 사용하는 기술은 아니다.

    IMAGE

  • Port Forwarding(Port Mapping) 정의

    • 패킷이 라우터나 방화벽과 같은 네트워크 장비를 가로지르는 동안 특정 IP주소와 포트 번호의 통신 요청을 특정 다른 IP와 포트 번호로 넘겨주는 네트워크 주소 변환(NAT)의 응용이다.
    • 이 기법은 게이트웨이의 반대쪽에 위치한 사설네트워크에 상주하는 호스트에 대한 서비스를 생성하기 위해 흔히 사용된다.

    IMAGE

16. OSI7layer - 7계층 :: 응용 :: HTTP

  • 기본적인 부분

    IMAGE

    • HTTP : 요청하고 받아오는 프로토콜
    • HTML, Javascript, CSS : 웹의 틀, Client
    • ASP/ASP.NET, JSP, PHP : 웹 서버 페이지를 만드는 기술, Server
  • HTTP(HyperText Transport Protocol)

    • www에서 쓰이는 핵심 프로토콜로 문서의 전송을 위해 쓰이며, 오늘날 거의 모든 웹 애플리케이션에서 사용되고 있다.
    • Request / Response 동작에 기반하여 서비스 제공
    • HTTP 1.0 / HTTP 1.1
      • HTTP 1.0

        • “연결 수립, 동작, 연결 해제"의 단순함이 특지이
        • 단순 동작(연결 수립, 동작, 연결 해제)이 반복되어 통신 부하 문제 발생

        IMAGE

      • HTTP 1.1

        • HTTP1.0의 문제점 해소 : 연속적인 응답 제공
        • 빠른 속도와 Internet Protocol 설계에 최적화될 수 있도록 Cache 사용 Data를 압축해서 전달이 가능하도록 하여 전달하는 Data 양 감소

        IMAGE

  • HTTP Request / Response

    • Request

      • 구조

      IMAGE

      IMAGE

      IMAGE

      • GET / POST
        • GET : url에 포함하여 보낸다.
        • POST : body에 포함하여 보낸다.
        • URL vs URI : 요즘엔 URI(Uniform Resource Identifier)가 맞다.
          scheme ://host[:port] [/path][?query]
          요청형식 IP주소 :포트번호 /파일경로 DB쿼리
          ftp ://IP주소:포트 /파일경로 DB쿼리
          http ://(IP주소:포트/도메인주소) /파일경로 DB쿼리
    • Response

      • 구조

      IMAGE

      IMAGE

      IMAGE

<!-- RESTful API -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	
<%
	request.setCharacterEncoding("UTF-8");
	int result=0;
	int no1 = 0;
	int no2 = 0;
	try {
	no1 = Integer.parseInt(request.getParameter("num1"));
	no2 = Integer.parseInt(request.getParameter("num2"));
	no2 = Integer.parseInt(request.getParameter("kkk"));
	} catch (Exception e) {
	
	}
%>

<%= no1 + no2 %>