컴퓨터끼리 통신을 할 때 일일이 컴퓨터끼리 연결을 못함
그래서 라우터 라는 것을 사용 (중간 매개 역할)
라우터가 시,구, 동 이런식으로 깔리게 되는데
해운대구에서 동래구로 통신을 보내려면 라우터를 거치게 된다
우리집(동)->라우터->구 라우터 이런식으로
라우터는 단일 거리로 가면 빠르겠지만 통신을 하고 있는 라우터가 있으면 우회해서 가기도 한다
데이터를 보낼때는 1바이트씩 잘라서 보내는데
카페를 생각하면 나는 아아 1잔만 먹으려고 하지만 앞에 주문이 100잔이 들어와있으면 그 카페는 이용하지 못한다 라우터도 마찬가지다 그래서 데이터를 보낼때는 잘라서 보낸다
이걸 segment라고 한다
bye라는 데이터를 보내는데 순서가 엉망이면 판독하기가 힘드니 순서도 같이 보낸다
그래서 seg의 기본 구조는 데이터+순서+포트 이다
통신이 워낙 복잡하다보니 이걸 7영역으로 나눴는데
7 계층(응용 계층) : 사용자와 직접 상호작용하는 응용 프로그램들이 포함된 계층
6 계층(표현 계층) : 데이터의 형식(Format)을 정의하는 계층
5 계층(세션 계층) : 컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층
4 계층(전송 계층) : 최종 수신 프로세스로 데이터의 전송을 담당하는 계층
3 계층(네트워크 계층) : 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층
2 계층(데이터링크 계층) : 데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층
1 계층(물리 계층) : 데이터를 전기 신호로 바꾸어주는 계층
이런식으로 나누게된다.
프로그래머는 5계층까지만 알면 충분하지만 정처기에는 7단계까지 알면 좋다.
5계층부터 3계층까지는 OS가 하는것이고 socket 통신이라고 한다.
소켓은 tcp를 위한 구조
포트를 사용하여 만들어진다.
데이터를 보낼때 3계층까지 가게 되면
패킷이 완성되고
2계층까지 가서 패킷에 라우터 주소까지 붙이면 이걸 프레임이라고 한다.
데이터가 라우터에 가면 라우터는 데이터 겉에 있는 프레임을 벗겨서 라우터 주소를 확인한다.
주소를 확인했는데 본인 주소가 아니면 다시 씌워서 다른 라우터에 보낸다.
이렇게 7계층부터 1계층까지 거치는것을 직렬화라고 하고
똑같이 통신을 받는 컴퓨터가 1계층부터 7계층을 거쳐서 데이터를 받으면 이걸 역직렬화라고 한다
포트번호가 필요한 이유는
내가 어떤 데이터를 전송했는데 이게 카톡으로 보낸건지 줌으로 보낸건지 네이트온으로 보낸건지
알수있게끔 해주는것이다.
https://docs.google.com/document/d/1BSR02_Qo599QHVqKHfF_dnybDyrt_JFkeCKAJ3t23e0/edit
라우터 주소
랭카드
데이터가 외부에서 들어올때 ip와 포트 번호를 보고 데이터 전송
포트 번호는 애플리케이션이 정해준다