2.2에서 설명할 OSI 7계층에서 나오는 기본적인 용어들의 설명
한 컴퓨터에 있는 데이터를 다른 컴퓨터로 옮기려면 어떻게 해야 할까?..
네트워크란?
네트워크 기술이란 서버와 클라이언트의 정보가 오고 가는 다리 역할을 하는 기술의 총칭
인터넷 통신 방식은 두가지 주체에 의해 이루어짐
주체 1 : 클라이언트
주체 2 : 서버
종류
- LAN(Local Area Networks) : 가까운 거리 (기업,회사)
- MAN(Metropolitan Area Networks : 지리적 위치 (도시와도시)
- WAN(Wide Area Networks : LAN WAN을 묶는 거대한 네트워크
구조
그리고 이 클라이언트와 서버가 통신을 주고 받을때 일종의 약속을 한 상태에서 명령을 주고 응답을하게 됨 이를
프로토콜 ( Protocol ) 이라고 부름
구체적인 숫자로 이루어진 주소 ( DNS서버를 통해 도메인 주소와 이어주는 역할 )
인터넷 통신도 마찬가지로 클라이언트가 요청한 정보가 서버에 잘 도달하기 위해서는 서버의 IP 주소가 필요하고 서버도 클라이언트에게 정보를 전달하기 위해서는 클라이언트의 IP 주소가 필요
택배상자와 비슷한 개념 - 택배상자에는 택배송장이 붙어 있기 때문에 어디서 보내고 어디로 발송할 지 정보가 나와있음
출발지 IP, 목적지 IP 등등이 기록된 데이터들을 담아 보내는 것
- 비연결성
- 비신뢰성
- 프로그램 구분
TCP와 PORT의 필요
4계층 - 전송계층에 속하는 중요 프로토콜로 컴퓨터간 데이터를 순서대로 에러없이 교환할 수 있게 하는 역할
정확한 데이터의 전달을 목표 (신뢰성)
- 연결지향
- 데이터 전달 보증
- 순서 보장
A -> B : 내 말 들려?
B -> A : 잘 들려. 내 말은 들려?
A -> B : 잘 들려!
연결하고자 하는 두 장치 간의 논리적 접속을 성립하기 위해 사용하는 연결 확인 방식
A -> B: 나는 다 보냈어. 이제 끊자!
B -> A: 알겠어! 잠시만~
B -> A: 나도 끊을게!
A -> B: 알겠어!
3 way와는 반대로 가상 회선 연결을 해제할 때 주고 받는 확인 작업
- TCP가 제공하는 연결지향, 데이터 전달보증, 순서보장 등 이러한 기능이 제공되지 않으나 단순하고 빠름
- UDP에서는 3-way를 적용하지 않기 때문에 error가 발생하면 다시 요청을 계속 보내는 방식으로 진행 (스타크래프트 UDP 생각하면 됨)
한 서버에 여러 요청을 할 때 각각의 출입문을 만들어줌
간단한 예시로 이해하는 것이 이해가 빠름
게임을 플레이 하면서 게임 내 보이스톡을 이용하는 동시에 웹툰을을 본다고 가정
위의 상황에서 게임 서버에서는 게임에 대한 데이터 요청과 보이스톡에 대한 요청이 동시에 이루어지기 때문에 이를 구분해야함
=> port번호로 이를 구분
컴퓨터와 컴퓨터 사이에서는 www.naver.com 과 같은 문자를 이해하지 못함 그래서 -> DNS서버로 보낸 후 거기서 받은 IP 주소로 도메인 주소( 목적지 )와 이어줌 ( 이 과정에서 데이터( 문자 )를 보내는 과정이 TCP )
사람이 읽을 수 있는 도메인 이름을 컴퓨터가 읽을 수 있는 IP 주소로 변환 => 도메인으로 ip주소를 알 수 있고 ip주소로 도메인을 알 수 있음
TCP에서 DNS를 들러서 IP를 받아오는 것 -> 이 IP를 찾아가는 과정을 라우팅이라고 함 그리고 그 구간별로 라우터 라는 장비가 있음
라우터 : 네트워크들을 연결, 구분, 분할, 시켜주며 관리하는 역할을함
네트워크 안에서 데이터를 보낼 때 이 데이터가 전달될 수 있도록 최적의 경로를 선택하는 과정을 말함
위에서 말하는 최적의 경로는 주어진 데이터를 가장 짧은 거리로 또는 가장 적은 시간 안에 전송할 수 있는 경로를 말함
그리고 이 과정을 능동적으로 수행하는 장치를 라우터 라고 말함
가장 좋은 경로를 찾기 위해 라우팅 알고리즘, 즉 라우팅 프로토콜을 사용하여 계산된 경로를 만들어 내며, 이것을 라우팅 테이블에 저장함 이를 위해 라우터 장비에는 서로 다른 네트워크 들에 대한 정보가 저장되어 있어야 하며, 이것을 네트워크 엔지니어 또는 관리자가 수행
라우팅 프로토콜 ( Routing Protocol )
패킷이 목적지까지 가는 방법을 결정해주는 프로토콜
RIP, OSPF, IGRP, BGP등이 있으며 라우팅 테이블을 참조해 가장 좋은 길로 패킷을 전송 시킴
통합 자원 식별자(Uniform Resource Identifier)는 인터넷에 있는 자원을 어디에 있는지 자원 자체를 식별하는 방법
URI의 하위개념으로 URL, URN이 있음
파일식별자(Uniform Resource Locator)는 네트워크 상에서 자원이 어디 있는지 위치를 알려주기 위한 규약
통합 자원 이름(Uniform Resource Name)은 urn:scheme 을 사용하는 URI를 위한 역사적인 이름
사설망 혹은 프라이빗 네트워크는 인터넷 어드레싱 아키텍쳐에서 사설 IP주소 공간을 이용하는 네트워크로 보통 가정,사무실,기업랜에 쓰임
사설망은 공인 인터넷이 아닌 가정,기업 등의 한정된 공간에 사용하는 네트워크를 말함. => 사설망에서만 사용 가능하기 때문에 공인망에선 사용할 수 없음
보통 private IP 만으로는 라우팅을 통해 다른 곳과 통신을 할 수 없음 (송신 수신 IP가 필요함) 하지만 NAT 장치에서는 private IP를 public IP로 전환을 시켜줌 -> 접속하고자 하는 곳까지 전달 가능
이 사설IP는 사설망에만 해당한다면 어디서나 사용할 수 있지만 사설망에서 공인 인터넷으로 나가고자 할때 자신의 출발지를 사설IP 그대로 사용할 수 없음 그래서 이 사설 IP를 공인 IP로 변환할 필요가 있음
IP를 변환하기 위한 방법을 고안한것이 NAT
공인망으로 나아가기 위해서는 반드시 사설IP를 공인IP로 NAT해야 함. 그리고 이를 NAT Device ( NAT장비, 공유기 )가 수행
NAT ( Network Address Translation ) : IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술
IP 패킷의 TCP/UDP 포트 숫자를 변환한다고 말한 이유는 NAT 의미가 IP 주소 뿐아니라 PORT까지 변환시켜 사용하는 것을 포함하기 때문
이를 Port Address Translation ( PAT 혹은 NAPT )라고 부름
NAT에 할당된 공인 IP는 하나이지만 사용자는 여러명( 사용자1,2,3 )일 수 있음. 이러한 상황에서 패킷이 공인망으로 나아갈 때는 문제가 없지만 되돌아올때 각 사용자( 사용자1,2,3 )를 구분할 방법이 없음..
PAT로 출발지 포트를 임의로 변경해야함
NAT를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함
- 인터넷의 공인 IP주소를 절약할 수 있다는 점
- 인터넷이란 공공망과 연결되는 사용자들의 고유한 사설망을 침입자들로부터 보호할 수 있다는 점
출발지 IP 혹은 목적지 IP를 바꾸겠다는것을 의미
위에서 정리한것보다 훨씬더 축약시켰으니 더 궁금한 내용들은 따로 찾아보고 이러한 용어들이 있구나 하고 넘어가자.
http의 특징이자 약점을 보완하기 위해 사용
HTTP에서 클라이언트 상태정보를 로컬에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있음
방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 부름
압축된 파일을 손상 없이 원래대로 되돌릴 수 있음 ( ZIP, 7z )
=> 한가지라도 깨질경우 전체를 사용할 수 없음
데이터의 손실을 고려할 수 있음 ( jpg, MPEG 등 영상..)
=> 어느정도는 손실되어도 일부는 사용할 수 있음
IP 네트워크를 활용하여 음성 데이터 패킷으로 변환하여 통화를 가능하게 하는 통신 서비스 기술
둘다 암호화 기법이지만 Hash는 단방향 암호화 기법 Encrpytion은 양방향 암호화 기법
평문을 암호화된 문장( text )로 만들고 + 암호화된 문장을 다시 평문으로 만드는 복호화 기능도 있음
평문을 암호화된 문장( text )으로 만들어주는 기능만 함
해쉬로만 암호화된 비밀번호는 해킹에 노출되기 쉽지만 salt로 추가적인 랜덤데이터를 넣어주면 예측할수 없는 암호를 만들 수 있음
해시 알고리즘과 암호화의 알고리즘은 종류가 다양하지만 모두에게 (해커들에게) 공개되어 있기 때문에 검증된것들을 사용해야 함.
간단하게 참고할만한 사이트 ( CrackStation ) ( Converstring )
함수가 호출 받았을 때 그 함수가 수행이 끝날때 까지 다음행으로 넘어가지 않음
호출 받았을때 바로 넘어감
각 항목별로 깊이 들어가면 끝도 없으니 견문을 넓힌다는 느낌으로 시작해보자.