일단 씻고 나가자
23.07.26 본문
2023. 07. 26 수요일
- TCP의 구성 요소?
: 기본적으로 헤더와 data 부로 구성되어 있다.
data는 이전 계층에서 전달받은 부이며, 헤더에 실제로 TCP 계층에서 붙일 내용이 들어간다.
TCP header에 들어갈 내용은 다음과 같다.
* source/destination port : 출발/목적지 포트번호. IP 정보는 후 계층(internet)에서 전달.
* sequence number : 송신된 데이터의 순서 번호. 데이터가 다른 순서로 올 때 저장했다가 순서대로 정렬한다. (전달받지 못한 데이터 요청도 한다.)
* ack number : 수신된 데이터 순서 번호 +1 요청. 잘 받았다는 의미.
* code bits : 데이터의 속성에 대한 1비트 정보.
- 3 way handshake란?
: 일반적으로 서버는 언제든 TCP 데이터를 수신할 수 있게끔 특정 포트번호를 열어 기다린다.(listen) 클라이언트와 서버가 데이터를 주고받기 전 연결 설정을 위한 과정이다.
우선 client에서 code bits의 SYN을 1로 바꾸고, sequence number에 랜덤한 숫자를 넣어 보낸다. server는 ACK와 SYN을 1로 바꾸고, sequence number에 들어 있는 숫자에 1을 더하여 ack number에 넣고, sequence number에 다른 랜덤한 숫자를 넣어 다시 client에게 보낸다. client는 ACK를 1로 바꾼 후 ack number에 server의 sequence number 값에 1을 더하여 다시 보낸다.
- [Effective Java] 한정적 와일드카드란? 타겟 타이핑이란?
: Bounded Wildcard. 제너릭에서 ‘?’에 해당한다.
한정적이란 것은 와일드카드가 모든 Type에 가능한 반면,
<? extends E> 혹은 <? super E>와 같이 범위를 정해놓는 것을 의미한다.
target typing이란 Java 8부터 등장한 기술로, 우측 변에 타입을 명시하지 않아도 타입을 추론 할 수 있는 기능이다. 즉, Collection<Integer> c = new Collection<>() 으로 선언하는 방식이 Java 7까지는 지원되지 않았다.