2-1 네트워크 관련(ip주소, 포트번호)

kst5137·2022년 1월 10일

1. ip 주소

1) 네트워크 모델의 종류

(1) TCP/IP 모델

(2) OSI 7계층

(3) 두 모델 비교 공통점과 차이점

공통점 : 계층적 네트워크 모델
계층간 역할 정의

차이점 :
계층의 수 차이
osi는 역할기반 TCP/IP는 프로토콜 기반
osi는 통신 전반에 대한 표준

2) 패킷 : 네트워크를 통해 전달되는 데이터

패킷은 여러 프로토콜들로 캡슐화 되어있음
여러번 포장된 택배상자
보내는 사람 받는 사람이 필요

3) 네트워크 프로토콜

(1) Ethernet(2계층) : 가까이에 있는 컴퓨터 찾아갈 때 쓰는 양식

부산에서 특정 집을 찾아가게하는 자세한 주소

(2) IPv4(3계층) : 멀리 있는 컴퓨터 찾아갈 때 쓰는 양식(어떤 동네 어떤 컴퓨터에서 사용하고 있는지)

소포를 생각했을때 서울과 부산 이런 느낌

(3) TCP(4계층) : 특정 컴퓨터에서 실행중인 특정 프로그램 찾아갈 때( ex) 크롬)

(4) http(7계층) : 웹에서 쓰는 데이터 주고 받기 ,웹 서비스를 이용할 때 쓰는 양식

ex) 어떤 웹툰 몇 화 보여줘

밑에서 부터 역순으로 커짐

비유하자면
이더넷에서 받는 사람이 우리집이 맞나?
IPv4에서 받는 사람이 우리 동네가 맞나?
TCP에서 받는 프로그램이 이 프로그램이 맞나?
http(data)에서 내가 원하는 것

4) 데이터를 주고 받는법

(1) IPv4 주소 : 현재 pc에 할당된 주소

(2) 게이트웨이주소 : 외부와 통신할 때 사용되는 네트워크의 출입구

(3) ARP프로토콜

컴퓨터는 MAC주소(컴퓨터 본체 자체의 번호 다 다름)로 서로 데이터를 전송하는데
IP주소를 입력하면 MAC주소를 알아올 수 있음 우리는 ip는 알 수 있어도 MAC주소는 알기 어려움
그럴때 사용하는 프로토콜
ㄱ) 알고싶은 맥주소의 ip를 받는사람으로 하고 이더넷으로 감싸서 연결된 모든 컴퓨터에 ARP요청
ㄴ) 요청 받은 컴퓨터는 이더넷이 모든 컴퓨터이기 때문에 이더넷을 열고 안에 arp 요청을 확인
ㄷ) arp요청에 있는 ip주소와 자신의 ip가 일치하면 응답을 보낸다.
ㄹ) arp요청으로 받은 주소가 있기 때문에 처음에 보낸 사람에게 응답을 바로 보낼 수 있음

5) TCP와 UDP

TCP는 매번 연결할지 물어보고 매번 보내는것을 물어본다.
UDP는 일단 다 보낸다.
TCP 는 UDP보다 안전하지만 느리다

(1) TCP Flags : U A P R S F

U : 급하다 빨리 보내달라
A : 대답
P : 데이터 집어넣기 ( 잘 안씀)
R : 연결을 끊거나 다시 처음부터 시작
S : 처음 연결할때 사용
F : 연결 종료할때 사용

(2) TCP를 이용한 통신 과정

TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해
가장 먼저 수행되는 과정

ㄱ) 클라이언트가 서버에게 요청 패킷을 보내고
ㄴ) 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고
ㄷ) 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다.

위의 3개의 과정을 3Way Handshake라고 부른다.

2. 포트 번호

특정 프로세스와 특정 프로세스가 통신을 하기 위해 사용한다
하나의 포트는 하나의 프로세스만 사용 가능
하나의 프로세스가 여러개의 포트를 사용하는 것은 가능하다.

  • http 80번 (웹서버)
    https 443번 (보안웹서버)
    자주쓰는 포트 번호 외우면 좋음

1) 포트포워딩

공인IP는 인터넷 세상에서 보이지만 사설IP대역은 보이지 않는다 때문에 이 둘을 연결하기 위한 방법이 필요
포트포워딩 : 특정 IP 주소와 포트 번호의 통신 요청을 특정 다른 IP와 포트 번호로 넘겨주는 것을 말한다 네트트워크 주소 변환(NAT)의 응용이다.

  • netstat - ano 치면 내 컴퓨터에서 실행중인 프로그램 다 보여줌

NAT : 공유기가 하는 역할
IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다.

같은 네트워크끼리는 접속이 되나 다른 네트워크는 안됨
공유기에 포트포워딩 하면 다른 네트워크에서도 접속 가능

2) 포트포워딩 응용 : 내 가상머신과 본체 연결하기

(1) 내 가상머신에서 웹서버 프로그램을 실행

(2) 가상머신에 나오는 웹서버 주소에 연결 하면 연결가능

내 공유기를 사용하는 것이기 때문에 아무 문제없이 연결 가능 만약 문제가 생긴다면 방화벽을 해제하면 연결될 가능성이 높음

3) 다른사람의 가상머신에 본체연결하기

(1) 다른사람이 가상머신에서 웹서버 프로그램 실행

(2) 내 본체에서 다른사람의 가상머신에 연결하면 연결이 안됨

내 공유기에서 다른사람의 공유기까지는 가는게 가능하나 그 내부에 가상머신까지는 갈 수 없기 때문이다. 따라서 포트포워딩을 통해 공유기에서 가상머신의 공유기, 서버로 갈 수 있게 해야한다.

(3) vitual network editor에서 관리자 모드로 가상머신의 공유기 역할을 하는 VMnet8에 포트포워딩을 추가

hostport는 아무값이나 입력하고 가상머신의 ip주소를 입력 가상머신의 포트는 웹서버를 이용할 것이기 때문에 80을 입력

(4) 다른사람의 본체의 ip주소 + port번호를 입력

ip주소를 통해 다른사람의 ip까지 가고 그후 port번호를 통해 가상머신의 ip와 연결되어서 다른사람의 가상머신에서 실행한 웹서버에 접속이 가능해진다.

3. 웹 동작 방식

1) 프로토콜

(1) Ethernet(2계층,MAC주소) : 가까이에 있는 컴퓨터 찾아갈 때 쓰는 양식

부산에서 특정 집을 찾아가게하는 자세한 주소

(2) IPv4(3계층,IP주소) : 멀리 있는 컴퓨터 찾아갈 때 쓰는 양식(어떤 동네 어떤 컴퓨터에서 사용하고 있는지)

소포를 생각했을때 서울과 부산 이런 느낌

(3) TCP(4계층,포트번호) : 특정 컴퓨터에서 실행중인 특정 프로그램 찾아갈 때( ex) 크롬)

(4) http(7계층,url) : 웹에서 쓰는 데이터 주고 받기 ,웹 서비스를 이용할 때 쓰는 양식

2) http 요청 프로토콜

(1) request line 제일 중요

ㄱ) 형태 :
요청타입 공백 url(uri) http 버전
get(타입) / test(uri) http / 1

ㄴ) 요청타입은 매우 많지만 2가지만 알면됨

  • GET : 클라이언트가 서버로 부터 문서를 읽어오려 할 때 사용
    웹툰 몇 화 (원하는 데이터)가 데이터가 URL 부분에 포함됨
    덜 중요한 데이터 사용할때 이용

  • POST : 클라이언트가 서버에게 어떤 문서를 전송할 때 사용
    웹툰 몇 화 (원하는 데이터)가 BODY부분에 포함됨
    주소창에 포함되기 때문에 id 비번 같은 중요한 데이터는 post를 이용
    주소창의 길이에는 제한이 있기 때문에 사진이나 영상같은것은 post를 이용

ㄷ) URL의 구조
URL : 파일의 위치를 입력하면 그걸 그대로 받아온다.
uri : 서버에서 설정한 아이디 파일로 받아온다.

scheme : // host[]
http:// ip주소 : 포트 / 파일이름
http:// ip주소 : 포트 / 폴더이름/ 파일이름 도메인주소

설정파일
/webtoon/list 로하면
/htdoc/a/list.html 파일로 보여준다

파일이름 부분에 ? 있으면 get방식

도메인주소
컴퓨터는 주소의 뒤에서 부터 읽는다.
ex) www.naver.com
맨 뒤에 .이 숨겨져잇음 (루트DNS서버를 의미)
원래는 www.naver.com.:443임

DNS서버란?
도메인주소 -> ip 주소로 바꿔주는 프로그램

루트 DNS = 전세계에 13개 ex) 도메인 맨 뒤에 .
최상위 DNS = 국가단위급 ex)com

로컬 DNS = 통신사 ex) kt

  1. 컴퓨터로 도메인 주소에 접속을 시도
  2. .(루트 DNS)한테 가서 com(최상위 DNS)를 물어봄
  3. com(최상위 DNS)로 가서 특정 회사의 DNS서버주소(책임 DNS)를 물어봄
  4. 특정 회사의 DNS서버주소(책임 DNS)한테 가서 웹 서버 컴퓨터의 ip주소를 물어봄
  5. 알아온 ip주소를 컴퓨터에게 알려주고 도메인 주소에 접속이 됨

(2) headers

헤더 종류

일반헤더
contents type : 이미지만 업로드 가능하게 가능
contents length :

요청헤더
cookie :
host : 호스트명
user-agent : 모바일 접속인지, pc접속인지 구분

응답헤더
server : 사용하고 있는 웹서버의 소프트웨어에 대한 정보
set-cookie : 쿠키를 생성하고 브라우저에 보낼때 사용

(3) 공백

(4) boody

2) http 응답 프로토콜

http버전 공백 상태코드 공백 상태문구
상태코드와 상태문구는 세트

(1) 상태코드
200번대 : '정상'적으로 요청을 처리해서 파일을 보내줬다
정상적으로 통신을 했기때문에 웬만하면 볼 일이 없음
400번대 : 클라이언트 잘못(클라이언트가 없는곳에 요청(404), 권한이 없는곳에 요청(403))
500번대 : 서버 잘못 ( 프로그램 코드를 잘못짰음 )

profile
공부중인 학생

0개의 댓글