네트워크란 무엇인가 노드들이 데이터를 공유할 수 있게 하는 디지털 전기 토인망의 하나이다 분산되어 있는 컴퓨터를 통신망으로 연결한 것을 말한다

인터넷이란 문서, 그림 영상과 같은 여러가지 데이터를 공유하도록 구성된 세상에서 가장 큰 전세계를 연결하는 네트워크 www는 인터넷을 통해 웹과 관련된 데이터를 공유하는것

local area network lan wide area network wan metropolitan area network man vlan,can,pan 등 기타 중앙 장비에 모든 노드가 연결된 star형 lan대역으로 많이 쓰임 여러 노드들이 서로 그물처럼 연결된 mesh형 wan 대역을 많이 씀 혼합현 선형 망형 lan은 가까운 지역을 하나로 묶는 네트워크

wan은 멀리 있는 지역을 한데 묶은 네트워크 가까운 지역끼리 묶인 lan과 lan을 다시 하나로 묶은 것

네트워크의 통신방식 특정대상이랑만 1대1 유니캐스트 특정 다수와 멀티캐스트 네트워크 젠체 브로캐스트

컴퓨터를 어떻게 알까 네트워크 프로토콜 프로토콜은 일종의 약속 양식 네트워크에서 노드와 노드가 통신할때 어떤 노드가 어느 노드에게 어떤 데이터를 어떻게 보내는지 작성하기 위한 양식

여러가지 프로토콜 가까운곳 ethernet프로토콜 (mac주소) 멀리있는 icmp ipv4 arp (ip 주소) 여러가지 프로그램 (tcp,udp 포트번호)

여러 프로토콜로 캡슐화된 패킹 Ethernet -> ipv4 -> tcp -> data

  1. 구글의 서버와 내컴퓨터 연결
  2. wireshark
  3. 프로토콜 직접 확인

네트워크 계층 모델 tco/ip 모델 1960년대 말 미국방성의 연구에서 시작

osi7 계층 iso에서 표준으로 지정한 모델 데이터를 주고받을때 tcp ip,icmp,arp 이더넷

공통점 계츠적 네트워크 모델 계층간 역할 정의 차이점 계층의 수 차이 osi는 역할 기반 , tcp/ip는 프로토콜 기반 osi는 통신 전반에 대한 표준 tcp/ip는 데이터 전송기술 특화

네트워크를 통해 전달되는 데이터 패킷 패킷이란 네트워크 상에서 전달되는 데이터를 통칭하는 말로 네트워크에서 전달하는 데이터의 형식화된 블록이다 패키은 제어정보와 사용자 데이터로 되어 있음

헤더/페이로드/풋터

패킷을보낼때 인캡슐레이터

패킷을 받았을때 프로토콜들을 하나씩 확인하면서 데이터를 확인하는 과정 디캡슐레이션

4새그먼트 3패킷 2계층 pdu(data unit) 프레임

2계층에서 하는일 주소체계 프로토콜 ethernet

같은 lan 하나의 네트워크 대역에서 어떤 장비가 어떤 장비에게 데이터를 보내는지 오류제어, 흐름제어 2계층은 3계층의 도움이 필요하다 mac주소 물리적인 주소

oui: ieee 에서 부여하는 일종의 제조회사 식별 id 앞에 6자리 고유번호 제조사에서 부여한 고유번호 16진수 맥주소 6바이트 00-00-00-00-00-00 2개당 1바이트

2계층 프로토콜 ethernet 14바이트 ethernet || header 16 상위프로토콜 타입 2바이트 16진수 0x (0x0806) arp (0x0800) ipv4

3계층에서 하는일 lan과 wan을 연결해주는 router 다른 네트워크 대역 즉 멀리 떨어진 곳에 존재하는 네트워크까지 어떻게 데이터를 전달할지 제어하는 일을 담당 발신에서 착신까지 발신 패킷을 관리

Wan에서 통신할때 사용하는 IP 주소 3계층 프로토콜 ipv4, arp, ipv6, icmp

일반적인 Ip wnth 1 btye -> 8bit 00000000 -> 11111111 0 -> 255

a 클래스 0.0.0.0 127.255.255.255 b class 128.0.0.0 191.255.255.255 c class 192.0.0.0 223.255.255.255 d class 224.0.0.0 239.255.255.255 e class 240.0.0.0 255.255.255.255

사설ip와 공인ip private ip public ip

특수한 ip 주소 0.0.0.0 wildcard 나머지 모든 ip 127.0.0.1 나 자신을 나타내는 주소 게이트웨이 주소 = 공유기 ip wan 외부에서 들어오는 공인 가장 높거나 가장 작은 ip 쓴다 관례

arp 가 하는일 같은 네트워크 대역에서 통신을 하기 위해 필요한 mac주소를 ip주소를 이용해서 알아오는 프로토콜 3계층에서만 같은 네트워크에서만 통신

같은 네트워크 대역에서 통신을 한다고 하더라고 데이터를 보내기 위해서는 7계층부터 캡슐화를 통해 데이터를 보내기 때문에 ip주소mac주소가 모두 필요하다

arp 28 byte 브로드캐스트 맥주소 6byte

00010800

opcode 1 물어볼때 opcode 2 응답할때

2계층 스위치 arp까지만 보고 맥에서 다 전달 arp 요청 보냄 다른 맥에 그럼 eth까보고 맞음 eth+arp 응답 보냄

arp-cache table에 등록

프레임 최소 단위 60byte 를 맞추려고 18byte 0으로 채움 패딩이 붙음 최대 1500byte

ipv4가 하는일 멀리있는곳과 통신하는법 ipv4조각화 라우팅테이블 다른 lan과 통신하는법 네트워크상에서 데이터를 교환하기 위한 프로토콜 데이터가 정확하게 전달될 것을 보장하지 않는다 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성잇다 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 tcp 4계층에서 보장한다

ipv4 기본 20 byte 옵션붙을수도 있음 ++4byte

icmp

internet control message protocol 인터넷 제어 메시지 프로토콜 네트워크 컴퓨터 위에서 도아가는 운영체제에서 오류 메시지를 전송 받는 데 주로 쓰인다 프로토콜 구조의 type과 code를 통해 오류 메시지를 전송 받는다.

type|code|checksum 8byte 0,8 3,11 3 목적지까지 못감 경로상문제 11 상대방에서 문제 5

라우팅테이블 어디로 보내야 하는지 설정되어 있는

netstat -r

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

ipv4의 조각화 큰 ip 패킷들이 적은 mtu( maximun transmission unit) 를 갖는 링크를 통하여 전송되려면 여러갱ㅇ의작은패킷으로 쪼개어/조각화되어전송돼야한다 즉 목적지까지 패킷을 전달하는 과정에 통과하는 각 라우터마다 전송에 적합한 프레임으로 변환이 필요하다 일단 조각화되면 최종 목적지에 돌달할때까지 재좆립되ㅣ 않는 것이 일반적이다 ipv4에서는 발신지 뿐만아니라 중간 라우터에서도 ip조각화가 가능 ipv6에서는 ip 단편화가 발신지에서 만 가능 재조립은 항상 최종 수신지에서 만 가능함

보내려는 데이터 크기 4800 mtu 1500 정도 세팅 몇개의패킹 4개 첫번째 패킷 1480 마지막패킷 360 icmp + 8 ipv4 + 20 eth +14 402

컴퓨터의 프로그램끼리는 이렇게 데이터를 주고 받는다

클라이언트 서버 4계층에서하는일 4계층 프로토콜 주소체계 포트번호 프로그램과프로그램을어ㅕㄴ결 전송 transportlayer 송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스를 제공한다 전송 계층은 연결 지향 데이터 스트림 지원 신뢰성 흐름 제어 그리고 다중화와 같은 편리한 서비스를 제공한다 전송 프로토콜 중 가장 잘 알려진 것은 연결 지향 전송 방식을 사용하는 전송 제어 프로토콜(tcp)이다 보다 단순한 전송에 사용되는 사용자 데이터그램 프로토콜 (udp) 도 있다

tcp protocol 안전한 연결을 지향하는 udp protocol 안전한 연결을 지향하지 않는

포트번호 특정 프로세스와 특정프로세스가 통신을 하기위해 사용한다 하나의 포트는 하나의 프로세스만 사용 가능하다 하나의 프로세스가 여러개의 포트를 사용하는 것은 가능하다 포트 번호는 일반적으로 정해져 있지만 무조건 지켜야 하는 것은 아니다 예를 들어 일반적으로 웹서비스는 80번 포트를 사용하지만 웹서비스가 항상 80번 포트를 사용해야만 하는것은 아니다 well known port ftp 20,21 ssh 22 telnet 23 dns 53 dhcp 67,68 tftp 69 http 80 https 443

registered port oracle 1521 mysql 3306 ms remote dynamic port 49152~65535

udp 8byte 4계층은 프로그램과 프로그램 도메인을 물으면 ip를 알려주는 dns 서버 dns server tftp server rip protocol 라이트끼리 동적으로 정보를 공유하는

tftpd

tcp protocol 가 하는일 전송제어프로토콜은 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로 순서대로 에러없이 교환할 수 있게 한다 tcp의 안정성을 필요로 하지 않은 애플리케이션의 경우 일반적으로 tcp 대신 비접속형 사용자 데이터그램 프로토콜 user datagram protocol을 사용 tcp는 udp보다 안전하지만 느리다

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

  1. 클라이언트가 서버에게 요청 패킷을 보내고
  2. 서버가 클라이언트의 요청을 받아들이는 패킷을보내고
  3. 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다 위의 3개의 과정을 3way handshake 라고 부른다

    데이터 송수신과정 tcp를 이용한 데이터 통신을 할때 단순히 tcp 패킷만을 캡슐화해서 통신하는것이 아닌페이로드를 포함한 패킷을 주고 받을떄의 일정한 규칙

    1. 보낸쪽에서 또 보낼 떄는 seq번호와 ack번호가 그대로다
    2. 받는 쪽에서 seq번호는 받은 ack번호가 된다
    3. 받는 쪽에서 ack번호는 받은 seq번호 + 데이터크기

tcp상태전이도 tcp연결상태의 변화 closed listen 연결대기 established 데이터 전달 상태 closing time_wait

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

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

특정 ip의 특정 포트로 온 요청을 포트 포워딩

front http html js css

back server asp/asp.net jsp php

db


python spring jquery ajax


http request protocol 요청하는 방식을 정의 하고 요청 프로토콜 구조 클라이언트으이 정보를 받는

get 요청 방식 header body

주소창에data 보내고 요청

post 바디에 data 보내고 요청


uri uniform resource identifier uri 구조 scheme://host[:port][/path][?query] ftp http https


url