TCP/UDP

미국에 있는 친구에게 Message를 보내고 싶다. 그러면 먼저, Socket library를 통해, OS 계층에다 Message를 넘긴다.OS 계층에서 TCP가 MEssage에다가 TCP정보를 감싼다.

이제 한번 더 내려가서 IP와 관련된 데이터들을 TCP감싼 곳에 또 감싼다.

이렇게 감싸지면서 IP Packet이 생성되고, IP,TCP정보,Message가 담겨져있다.

그다음 LAN카드를 통해 전송 될 때, Ethernet frame이라는 것이 포함되어 전송 된다.

Ethernet frame은 MAC Adress같이, 실제 그런 물리적인 정보들이 포함되어져 있다.

IP패킷 같은 경우, 출발지 IP,목적지 IP가 있었다고 했었다.

참고로 패킷은 Package(수하물)라는 뜻과 덩어리를 합친 합성어라고 생각하면 된다.

즉, 택배 박스로 포장해서 보내는 것과 비슷한 것이다.

TCP에 관해서-

IP 패킷안에다 TCP 관련된 정보가 들어간다. PORT,전송제어,순서,검증 정보 등...

그런 것들이 더 들어가서 IP만으로 해결이 안됐던, 순서 문제들이 해결된다.

그리고 그 안에 만들었던 전송 데이터를 넣게 된다.

TCP 특징

전송 제어 프로토콜(Transmission Control Protocol)

①.연결지향 - TCP 3 Way handshake(가상 연결)

IP로만 감싸서 보냈을 때는 상대방 컴퓨터가 꺼져있으면 전송이 안됐다. 하지만, TCP를 통해

연결을 하고 나서 보내기 때문에, 연결 지향적이다.

②.데이터 전달 보증

메세지를 보냈을 때, 중간에 Packet이 누락이 되면, 내가 알 수있다.

③.순서 보장

④.신뢰할 수 있는 프로토콜

⑤.현재는 대부분 TCP를 사용한다.

이제 ①.연결지향 - TCP 3 Way handshake(가상 연결)에 대해 자세히 알아보자.

먼저 TCP IP 프로토콜로 연결하게 되면, 클라이언트에서 서버로 1.SYN(Synchronize) 메세지를 보낸다.

서버에서 오면, 클라이언트에게 2.SYN+ACK를 보내준다. 그런 다음 클라이언트가 ACK를 서버에게 보낸다. 이렇게 해서, 3 Way Handshake가 된다. 그러한 과정을 다 거치고 나서, 연결이 되고 나면 데이터를 전송하게 된다.

그렇지만, 그것은 어디까지나 가상연결이며, 개념적으로만 연결이 된 것이다. 나를 위한 전용 랜선이 된 것이 아니라, 논리적으로만 연결이 됐다고 "판단"만 하자 라는 것이다.

②.데이터 전달 보증에 대해 자세히 알아보자

TCP/IP에서는 클라이언트에서 데이터를 전송 하게 되면 서버에서 데이터를 잘 받았다고 보내줘서

내가 잘 보냈는지 판단을 할 수 있다.

③.순서 보장

패킷을 1번,2번,3번 순서로 보냈다고 가정해보자. 그러면 서버가 도착 했는데 1번 3번 2번 이렇게 잘 못 왔다고 가정 해보면 기본 적으로는 다 버리고, 패킷 2번부터 다시 보내라고 해서, 2번부터 다시 보내게 된다.

그런걸 다 어떻게 가능하냐면,

TCP 정보에는 출발지 정보, 목적지 정보,전송 제어, 순서,검증 정보들이 다 들어있기에 가능 하다.

 

 

출처: 김영한 모든 개발자를 위한 HTTP 웹 기본 지식

+ Recent posts