Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 기록

TCP/IP 개념 정리 본문

전반적인 개발 지식

TCP/IP 개념 정리

기록개발자 2020. 4. 10. 17:17

원본

https://m.blog.naver.com/mes194/220834219519

 

[컴퓨터네트워크] TCP/IP 프로토콜이란

TCP/IP 프로토콜이 뭘까요?일단 프로토콜 (protocol) 이란 '정보를 주고받기 위해 만들어논 규칙...

blog.naver.com

TCP/IP 프로토콜이 뭘까요?

일단 프로토콜 (protocol) 이란 '정보를 주고받기 위해 만들어논 규칙' 입니다.

그렇다면 TCP/IP 프로토콜은 뭘까요?

따로따로 써있는 ex)(TCP 프로토콜, IP 프로토콜) 경우에는 각각의 프로토콜을 뜻하는게 맞습니다.

하지만 TCP/IP 프로토콜라고 써있을 때는 보통 TCP/IP 를 사용하는 프로토콜들의 모음. 즉, (응용층/전송층/네트워크층/링크층/물리층)5개의 층을 사용하는 구조를 TCP/IP 프로토콜라고 합니다.

그러니까 TCP/IP 프로토콜를 쓴다~ 라고 하면 5개의 계층을 가지는 프로토콜을 사용한다 라는 것이죠.

그렇다면 왜 TCP/IP 프로토콜은 계층을 나누는 걸까요?

프로토콜 계층화는 복잡한 작업을 여러 개의 작고 단순한 작업들로 나눌 수 있게 해줍니다. 계층화의 특징은 모듈성입니다. 즉 각각의 계층을 여러개의 모듈처럼 생각하는거죠!

모듈성이 있으므로 서비스 구현의 분리, 전문화, 중간시스템의 통신 가능합니다. 하나의 계층이 고장나더라도 시스템전체를 바꾸지 않아도 되며 어느 계층이 고장났는지 알기도 쉽습니다.

단점은 단순한 일이라도 복잡하게 나뉠 수 있다는 것입니다.

프로토콜 계층화를 할 때는 2가지 조건을 꼭 지켜줘야 합니다.

1. 각 계층은 각 방향으로 한가지씩, 상반되는 두 가지 작업을 수행할 수 있도록 만들어야 한다.

-한 쪽에서 메시지를 준다면, 반대쪽은 메시지를 받을 수 있어야 한다.

2. 양측의 각 계층에 있는 객체는 서로 동일해야한다.

-한 쪽에 응용/전송/네트워크/링크/물리 층이 있으므로 반대 쪽도 차례대로 응용/전송/네트워크/링크/물리 층이 있어야한다. 그래야 논리적인 연결이 가능하다.

각 계층은 인접한 계층과 서로 서비스(≒정보)를 주고받는다.

각 계층을 대략적으로 알아보자.

1.물리층 : link층에서 받은 frame을 signal(bit단위)로 바꾼다. 딱히 사용하는 주소는 없다.

digital signal이므로 데이터에 변형이나 오류가 적다.

2.데이터 링크층 : network층에서 받은 datagram을 frame으로 캡슐화한다. 실제로 목적지주소(LAN:MAC주소-local address,제조사에서 만들어져 나옴)를 찾아간다. 유무선 링크를 통해 frame전달 책임이 있다. 오류제어와 흐름제어를 한다.

3.네트워크층 : transport층에서 받은 TCP(혹은 여러가지)를 받아서 datagram으로 캡슐화한다. IP주소(전역적 = global address)를 써서  목적지를 찾아간다. host to host 연결책임이 있다. 주요 기능은 라우팅과 포워딩이다. 라우팅은 최적루트는 찾아서 라우팅테이블을 만드는 것이고, 포워딩은 최적루트로 데이터그램을 내보내는 것이다. 패킷들은 독립적(=비연결적)이라서 제어기능이 거의 없다. best-effort delivery이다. 이 뜻은 나는 최선을 다해 보내는데, 정보가 훼손되든 말든 내 알 바 아니다.^^ 라는 의미다. IP(주 프로토콜),ICMP(제어관련 보조 프로토콜),IGMP(그룹화하는 보조 프로토콜),ARP(링크층 주소랑 매핑하는 보조프로토콜) 등등 이 있다.//단, 사용되는게 네트워크층이지 만들어지는곳은 응용층일 수도 있다.

////DHCP도 프로토콜인데 느낌이 다른것같다. 뭘까

4.전송층 : application층에서 받은 message를 segment(by TCP)와 같은 것들로 캡슐화 한다. 중간자 역할로 portnumber(local address)를 사용한다.

TCP는 연결형이고 흐름/오류/혼잡제어 합니다.하지만 그만큼 느리죠. 

UDP는 비연결형이고 책임x,제어x입니다. 하지만 빠릅니다.

SCTP는 TCP와 UDP를 섞어놓은 것입니다.

5.응용층 : 프로세스간 통신을 하는 층이다. 사이트주소나 메일주소같은걸 주소로 쓴다. 아직 잘모른다.

캡슐화란 상위계층에서 페이로드를 받아서 헤더를 붙여주는 것이다.(역캡슐화는 하위계층에서 받아서 헤더를 풀어내는 것) 링크층스위치는 캡슐화나 역캡슐화를 하지 않는다. 굳이 뭘 달지않고 보내기만 하면된다. 보통 중간에 있는 라우터는 조립도 안하고 페이로드의 오류도 검사하지 않는다. 다만 헤더에 오류가 있는지만 확인한다.

다중화는 상위 계층 프로토콜로부터 오는 여러 개의 패킷을 한 계층에서 하나의 프로토콜로 캡슐화 할 수 있다는 것이다.(한 번에 하나씩) 예를들어 TCP UDP 두개에서 와도 IP 하나로 캡슐화 가능하다. 이런식인것 같다. 역다중화는 패킷을 여러 개의 다음 상위계층 프로토콜로 전송할 수 있다는 것이다.(한 번에 하나씩)IP를 TCP나 UDP 같은 걸로 역캡슐화 하는 것이다.?  프로토콜은 캡슐화된 패킷이 어느 프로토콜인지 식별하기 위한 필드를 헤더의 프로토콜필드에 적어놔야한다!

'전반적인 개발 지식' 카테고리의 다른 글

SSH(Secure Shell Protocol)에 대해 알아보자  (0) 2020.04.03
MVC 패턴 정리  (0) 2020.03.22
개발자 포트폴리오 작성법  (0) 2020.01.10
API 란?  (0) 2019.12.31