#오류에 대해 지적해 주시면 수정하겠습니다.
4계층 : Transport Layer
TCP와 UDP는 OSI 7계층 중 4계층인 전송계층에 속하는 프로토콜이다.
https://jinniepark.tistory.com/57
OSI 7계층은 해당 글에서 자세히 다루었으나 4계층에 대해서 간단하게 알아보자면, 어떤 프로세스로 전달 될지를 결정하는 계층이다. 프로세스는 포트번호로 구별할 수 있다.
TCP의 등장배경
일단 TCP를 먼저 살펴보도록 하겠다. 일단 TCP는 어째서 등장하게 되었을까?
1970년대 냉전 당시 네트워크는 “회선교환방식”이라는걸 썼는데, 말그대로 회선을 교환하는 방식이었다.
만약에 A가 C랑 통신하다가 B랑 통신하고 싶다면, C와 연결되어있던 회선(케이블)을 빼서 B랑 연결해주면 되는거였다.
이러한 방식은 회선의 효율이 낮을 뿐더러 저 케이블에 문제가 생긴다면, 네트워크가 끊기는 거였다.
전쟁중이었던 그당시 상황을 생각해보면 이러한 문제점은 상당히 큰 위험사항이었다고 한다.
그래서 관심을 가지게 된게 “핵이 터져도 끊기지 않는 연결”이었고 이후 고안한 방식이 “패킷 교환 방식”이다.
패킷 교환 방식은 데이터를 잘게 쪼개서 여러 회선으로 보내는거다. 그러면 이렇게 하나쯤 문제가 생겨도, 데이터가 좀 유실 될 수 있겠지만 네트워크 전체가 마비된다던가 그런일은 없다. 이 아이디어를 실현하는 프로토콜이 바로 TCP다.
TCP
위와 같은 이유로 tcp는 segment단위로 쪼개서 보낸다. 그리고 세그먼트마다 앞에 헤더가 붙게 된다.
한 프로토콜에 대해 자세히 알고 싶다면 헤더를 살펴보는 것이 가장 효과적인 방법인것 같다. 그러므로 헤더의 구성요소에 대해 자세히 봐보도록 하자.
TCP의 헤더
Source Port : 보내는 프로세스의 포트번호
Destination Port : 받는 프로세스의 포트번호
Sequence number : 다음에 이어지는 세그먼트 (패킷을 쪼개서 보내니까 이런부분이 필요한가보다)
Acknowledgment Number : 다음에 받기를 기대하는 세그먼트
HeaderLength : options의 길이가 가변적이기 때문에 어느부분이 헤더고 어느부분이 데이터인지 구별하기 위해 헤더 길이 정보를 가진다.
ACK/SYN/FIN : 커넥션을 만들때/종료할 때 사용하는 비트 (이건 handshake때 자세히 나온다)
Window Size : 감당가능한 패킷의 양
#TCP교통체증과 서비스 붕괴사건
1986년에 있었던 일로 그 당시 최첨단 회선이 효율이 10분의 1밖에 안난 사건이라고 한다. 그 당시 라우터가 문제였는데, 라우터가 과부하가 걸려서 엄청나게 많은 패킷을 놓치고 있던 것이었다. 근데 패킷을 놓치면 tcp는 상당히 타격이 크다. 첨부터 다시보내야하니깐.(이건 TCP의 통신방식을 좀 알아야한다.) 그것은 더더욱 과부하를 만들고 악순환의 반복이다. 이때 등장한 사람이 Van Jacobson라는 사람이다. 이분이 제안한 방법이.. 패킷을 마구 보내지말고 일단 1개씩 보내면서 서로 처리 가능한 패킷 개수를 조절하는 것이다. 이거는 마치 창문을 열고 닫으면서 조절하니까 window size라고 한다. 이 정보로 서로 감당 가능한 패킷의 양을 조절하는 것이다. 뭐쨋든 이런식으로 패킷 양을 조절한다는 점.
Checksum : 오류를 감지하는 부분
UDP의 등장배경
TCP는 안정적이긴 하지만 너무 느리고, 용량도 컷다. 어떤 서비스는 안정적인것보다 속도가 더 중요하다.
그래서 등장한게 UDP다. 사실 UDP는 프로토콜이라기보단 그냥 IP에다가 포트번호만 붙인 수준이라고 한다.
UDP
UDP의 헤더
Source Port : 보내는 프로세스의 포트번호
Destination Port : 받는 프로세스의 포트번호
Length : 데이터의 길이
Checksum : 오류를 감지하는 부분
TCP와 UDP의 비교
TCP는 확실하고 신뢰있는 통신을 하지만 용량이 많고 느리다.
UDP는 신뢰성은 없어도 용량이 적고 빠르다.
Resources
https://www.youtube.com/watch?v=
'Network' 카테고리의 다른 글
[Network스터디]IP address/MAC address(+깨알ARP) (0) | 2021.09.26 |
---|---|
[Network스터디]OSI 7 Layers (0) | 2021.09.18 |