티스토리 뷰

 

각 계층을 지나면서 해당되는 정보가 덧붙는다. 이렇게 캡슐화를 하여 데이터를 전송하고, 받는 곳에는 캡슐화된 정보를 각 계층에서 하나씩 떼어내면서 역캡슐화로 데이터를 수신하게 된다. 각 단계를 거치며 데이터가 원하는 곳에 전송될 수 있게 정보가 덧붙게 되고, 그 정보에 맞게 데이터가 보내지게 된다. 

애플리케이션 계층

계층 모델 중 트렌스포트 이하에서는 전송을 담당하므로 데이터 전송을 제외한 영역을 애플리케이션 계층이라고 생각하면 된다. 사용자가 직접 체감하는 계층이다.

 

[사용자가 직접 사용하는 프로토콜]

- HTTP : 웹에서 사용자와 서버 사이에서 웹 페이지 데이터를 주고 받는다.

- POP, SMTP, IMAP : 메일을 송수신, 보관

- SMB, AFP : LAN 안에서 파일 공유

- FTP : 서버를 통해 파일 공유

- Telnet, SSH : 원격에서 서버 제어

 

[사용자가 간접적으로 사용하는 프로토콜]

- DNS : 도메인 명과 IP 주소의 정보를 변환

- DHCP : LAN에서 컴퓨터에게 IP 주소 할당

- SSL/TLS : 통신 데이터를 암호화하여 공유

- NTP : 네트워크에 연결된 장비들의 시스템 시간을 동기화

- LDAP : 네트워크에 연결된 자원을 통합관리에 필요한 서비스 제공

트렌스포트 계층

애플리케이션 계층에 데이터를 분류하여 전달하는 역할을 한다. 포트 번호를 가지고 애플리케이션을 구분한다. 

 

- TCP(연결형 통신) : 데이터의 정확한 전달을 중요시하기 때문에, 3 handshake로 연결상태를 확인하는 등의 절차를 거친다. 데이터 수신 순서도 보장해준다.

- UDP(비연결형 통신) : 데이터의 전송 속도를 중요시하기 때문에 신뢰성을 보장하지는 않는다. VoIP(인터넷 전화)나 동영상 스트리밍 서비스에서 많이 사용된다고 한다. 

 

TCP 헤더

TCP 세그먼트는 데이터에 TCP 헤더가 붙은 형태이다. TCP 헤더에는 포트번호(출발지 포트번호, 목적지 포트번호), 일렬번호, 확인응답번호, 데이터 오프셋, 예약, 컨트롤비트(코드비트), 윈도우사이즈,  체크섬등 정보가 포함된다. 

 

TCP 헤더에는 코드비트(컨트롤비트) 정보도 포함하게 되는데 초기값은 0으로 설정되어 있다. TCP는 커넥션 연결(3-way handshake)를 하는데, ACK으로 연결 요청을 하면 1으로 SYN으로 요청수락을 하면 1으로 변경된다. 데이터 전송이 끝나면 연결을 끊는다.

URG ACK PSH RST SYN FIN
0 0 0 0 0 0

 

TCP는 일렬번호와 응답확인 번호로 데이터가 제대로 송수신 되는지 여부를 체크한다. 일렬번호는 송수신 바이트수 + 1으로 송수신한 바이트 크기도 알 수 있다.  윈도우사이즈에 버퍼의 크기를 설정하여 한번에 받을 수 있는 데이터의 크기 정보를 가진다.

인터넷 계층

데이터를 수신지 컴퓨터까지 전달하는 역할을 한다. 그 수신지는 IP 주소라는 식별자 정보로 구분한다. 데이터를 알맞는 IP address에 전달하기 위해서는 라우터가 필요하다. 경로를 찾아가는 과정을 라우팅이라고 한다. IP 헤더에는 송,수신지 IP 주소, 패킷 길이 등의 정보가 포함된다. IPv4를 사용하다가 32비트 어드레스가 고갈될 상황이 되어 최근에는 IPv6로 넘어가고 있는 추세이다.

 

IP address네트워크부호스트부로 나뉜다. 네트워크부는 IP 주소, 호스트부는 그 IP 주소에 속한 호스트(컴퓨터)를 의미한다. 어드레스 클래스는 네트워크 부와 호스트 부 길이에 따라서 A~D 클래스로 나뉜다. 어드레스 클래스는 네트워크부와 호스트부의 크기가 정해져 있지만, 서브넷 마스크를 사용하여 유연하게 길이를 조정하여 사용할 수 있다. 

 

IP address는 public address와 private address로 나뉜다. 외부에서 접근하기 위해서 사설 IP address는 NAT(Network Address Translation) 기법을 사용하여 공인 IP 주소로 변환해준다.  NAT는 단순히 IP 주소를 변환하는 것이기 때문에 같은 포트번호를 사용하거나 외부에서 일방적으로 보낸 데이터는 전달되지 않는다. 이 한계를 개선하기 위해서 NAPT(Network Address Port Translation)을 사용한다. 포트 번호가 동일하다면, 충돌이 나지 않게 변환하여 구분한다. 

외부로 서버를 공개해야 할 때, 라우터의 특정 포트 번호로 통신이 들어오면 내부 특정 서버로 전달되게 설정하는 것을 포트포워딩(port forwarding)이라고 한다.

 

데이터 경로를 찾기 위해서는 각 라우터의 정보교환을 하는데 이때 사용하는 것을 라우팅 프로토콜(routing protocol)이라고 한다. BGP, OSPE, RIP 등이 있다. 라우터는 네트워크 간의 패킷을 전달하는 역할을 한다. 라우터는 내부에 라우팅 테이블을 가지고 IP 주소에 따라 가야할 방향의 정보를 가지고 있다. 

 

패킷은 생존기간(TTL : Time To Live)을 가지고 있다. 패킷 생존기간이 지나면 소멸되는데 ICMP(Internet Control Message Protocol) 메세지를 사용해 데이터 전송의 문제상황을 통보한다. 

 

도메인명과 IP 주소가 대응하는 정보를 가져오기 위해 DNS를 사용한다. IP 주소의 중복할당을 방지하는 등의 관리를 자동으로 해주는 DHCP(Dynamic Host Configuration Protocol)을 사용한다.

네트워크 인터페이스 계층

네트워크의 하드웨어를 제어하는 역할을 한다. MAC(Media Access Control) 어드레스는 네트워크 장비에 부여된 식별번호이다. 제조사가 제조 단계부터 붙여 전 세계의 네트워크 장비들이 서로 구분될 수 있게 할당된다. 네트워크 인터페이스 계층에서는 이더넷 헤드+트레일러 정보를 붙인다. 이것을 프레임이라고 한다. 데이터 정보에서 IP 어드레스는 최종 목적지가 설정되면 변경되지 않으나 MAC 어드레스는 다음 장비의 어드레스로 교체된다.

 

이더넷은 유선 LAN 장비끼리 연결시 가장 많이 사용하는 규격이다. (이더넷에 규격은 다양하게 나뉜다) 허브는 요청이 들어온 전기신호를 복원시켜 신호를 전달받은 포트를 제외한 나머지 포트에게 전달한다. 이때, 컴퓨터는 자신의 정보가 아닌 전기신호는 무시한다. 여러대가 동시에 신호를 주고 받으면 충돌이 생길 수 있는데 이것을 해결하기 위해 CSMA/CD 방식을 사용했다. 데이터를 보내려는 컴퓨터에 전기가 흐르는지 판단하여(데이터 송신작업을 수행중인지) 흐르지 않을 때, 데이터를 송신한다. 효율성의 이유로 지금은 잘 사용하지 않고 스위치(switch)라는 장비를 사용한다.   

 

스위치는 MAC 주소 테이블을 가져 각 포트에 해당하는 MAC 주소정보를 가진다. 처음에는 비어있으나 데이터 전송이 된 정보는 테이블에 등록되게 된다. 따라서 MAC 주소 필터링을 통해서 모든 컴퓨터가 정보를 수신하게 되는 것이 아니라 자신에게 맞는 정보를 받을 수 있게 한다. (초기에 등록되지 않을 때는 모든 컴퓨터가 받는다. 이것을 플러딩이라고 한다.)

물리계층

물리계층에 대해 살펴보면, LAN카드가 아날로그 신호를 전기 신호로 변경해주는 작업을 한다. (사진을 찾아보면 인터넷 케이블 꽂는 그 부분처럼 생겼다.) 케이블 종류에 따라 커넥터에 전송되는 위치가 다르다. 리피터란 증폭기능을 하는 중계 장비이다. 허브는 전기신호를 전기 신호를 복원하고 신호를 증폭시킨다. 

정리

인터넷 네트워크에서 가장 사용하는 TCP/IP 모델애서 각 계층이 하는 역할에 대해 간단하게 정리해보았다. 간단한 큰 그림을 가지고 앞으로 웹 http 네트워크 방식을 정리하려고 한다.

 

더보기

TCP/IP 쉽게, 더 쉽게 + 모두의 네트워크 + 그림으로 배우는 htttp & network basic 책을 읽고, 김영한님 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리한 내용입니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함